home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / binutils-data / i686-pc-linux-gnu / 2.16.1 / info / as.info next >
Text File  |  2006-01-09  |  716KB  |  17,974 lines

  1. This is
  2. /var/tmp/portage/binutils-2.16.1/work/binutils-2.16.1/gas/doc/as.info,
  3. produced by makeinfo version 4.8 from
  4. /var/tmp/portage/binutils-2.16.1/work/binutils-2.16.1/gas/doc/as.texinfo.
  5.  
  6. START-INFO-DIR-ENTRY
  7. * As: (as).                     The GNU assembler.
  8. * Gas: (as).                    The GNU assembler.
  9. END-INFO-DIR-ENTRY
  10.  
  11.    This file documents the GNU Assembler "as".
  12.  
  13.    Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002
  14. Free Software Foundation, Inc.
  15.  
  16.    Permission is granted to copy, distribute and/or modify this document
  17. under the terms of the GNU Free Documentation License, Version 1.1 or
  18. any later version published by the Free Software Foundation; with no
  19. Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
  20. Texts.  A copy of the license is included in the section entitled "GNU
  21. Free Documentation License".
  22.  
  23. 
  24. File: as.info,  Node: Top,  Next: Overview,  Up: (dir)
  25.  
  26. Using as
  27. ********
  28.  
  29. This file is a user guide to the GNU assembler `as' version 2.16.1.
  30.  
  31.    This document is distributed under the terms of the GNU Free
  32. Documentation License.  A copy of the license is included in the
  33. section entitled "GNU Free Documentation License".
  34.  
  35. * Menu:
  36.  
  37. * Overview::                    Overview
  38. * Invoking::                    Command-Line Options
  39. * Syntax::                      Syntax
  40. * Sections::                    Sections and Relocation
  41. * Symbols::                     Symbols
  42. * Expressions::                 Expressions
  43. * Pseudo Ops::                  Assembler Directives
  44. * Machine Dependencies::        Machine Dependent Features
  45. * Reporting Bugs::              Reporting Bugs
  46. * Acknowledgements::            Who Did What
  47. * GNU Free Documentation License::  GNU Free Documentation License
  48. * Index::                       Index
  49.  
  50. 
  51. File: as.info,  Node: Overview,  Next: Invoking,  Prev: Top,  Up: Top
  52.  
  53. 1 Overview
  54. **********
  55.  
  56. Here is a brief summary of how to invoke `as'.  For details, *note
  57. Command-Line Options: Invoking.
  58.  
  59.      as [-a[cdhlns][=FILE]] [-alternate] [-D]
  60.       [-defsym SYM=VAL] [-f] [-g] [-gstabs] [-gstabs+]
  61.       [-gdwarf-2] [-help] [-I DIR] [-J] [-K] [-L]
  62.       [-listing-lhs-width=NUM] [-listing-lhs-width2=NUM]
  63.       [-listing-rhs-width=NUM] [-listing-cont-lines=NUM]
  64.       [-keep-locals] [-o OBJFILE] [-R] [-statistics] [-v]
  65.       [-version] [-version] [-W] [-warn] [-fatal-warnings]
  66.       [-w] [-x] [-Z] [-target-help] [TARGET-OPTIONS]
  67.       [-|FILES ...]
  68.  
  69.      _Target Alpha options:_
  70.         [-mCPU]
  71.         [-mdebug | -no-mdebug]
  72.         [-relax] [-g] [-GSIZE]
  73.         [-F] [-32addr]
  74.  
  75.      _Target ARC options:_
  76.         [-marc[5|6|7|8]]
  77.         [-EB|-EL]
  78.  
  79.      _Target ARM options:_
  80.         [-mcpu=PROCESSOR[+EXTENSION...]]
  81.         [-march=ARCHITECTURE[+EXTENSION...]]
  82.         [-mfpu=FLOATING-POINT-FORMAT]
  83.         [-mfloat-abi=ABI]
  84.         [-meabi=VER]
  85.         [-mthumb]
  86.         [-EB|-EL]
  87.         [-mapcs-32|-mapcs-26|-mapcs-float|
  88.          -mapcs-reentrant]
  89.         [-mthumb-interwork] [-k]
  90.  
  91.      _Target CRIS options:_
  92.         [-underscore | -no-underscore]
  93.         [-pic] [-N]
  94.         [-emulation=criself | -emulation=crisaout]
  95.         [-march=v0_v10 | -march=v10 | -march=v32 | -march=common_v10_v32]
  96.  
  97.      _Target D10V options:_
  98.         [-O]
  99.  
  100.      _Target D30V options:_
  101.         [-O|-n|-N]
  102.  
  103.      _Target i386 options:_
  104.         [-32|-64] [-n]
  105.  
  106.      _Target i960 options:_
  107.         [-ACA|-ACA_A|-ACB|-ACC|-AKA|-AKB|
  108.          -AKC|-AMC]
  109.         [-b] [-no-relax]
  110.  
  111.      _Target IA-64 options:_
  112.         [-mconstant-gp|-mauto-pic]
  113.         [-milp32|-milp64|-mlp64|-mp64]
  114.         [-mle|mbe]
  115.         [-munwind-check=warning|-munwind-check=error]
  116.         [-mhint.b=ok|-mhint.b=warning|-mhint.b=error]
  117.         [-x|-xexplicit] [-xauto] [-xdebug]
  118.  
  119.      _Target IP2K options:_
  120.         [-mip2022|-mip2022ext]
  121.  
  122.      _Target M32R options:_
  123.         [-m32rx|-[no-]warn-explicit-parallel-conflicts|
  124.         -W[n]p]
  125.  
  126.      _Target M680X0 options:_
  127.         [-l] [-m68000|-m68010|-m68020|...]
  128.  
  129.      _Target M68HC11 options:_
  130.         [-m68hc11|-m68hc12|-m68hcs12]
  131.         [-mshort|-mlong]
  132.         [-mshort-double|-mlong-double]
  133.         [-force-long-branchs] [-short-branchs]
  134.         [-strict-direct-mode] [-print-insn-syntax]
  135.         [-print-opcodes] [-generate-example]
  136.  
  137.      _Target MCORE options:_
  138.         [-jsri2bsr] [-sifilter] [-relax]
  139.         [-mcpu=[210|340]]
  140.  
  141.      _Target MIPS options:_
  142.         [-nocpp] [-EL] [-EB] [-O[OPTIMIZATION LEVEL]]
  143.         [-g[DEBUG LEVEL]] [-G NUM] [-KPIC] [-call_shared]
  144.         [-non_shared] [-xgot]
  145.         [-mabi=ABI] [-32] [-n32] [-64] [-mfp32] [-mgp32]
  146.         [-march=CPU] [-mtune=CPU] [-mips1] [-mips2]
  147.         [-mips3] [-mips4] [-mips5] [-mips32] [-mips32r2]
  148.         [-mips64] [-mips64r2]
  149.         [-construct-floats] [-no-construct-floats]
  150.         [-trap] [-no-break] [-break] [-no-trap]
  151.         [-mfix7000] [-mno-fix7000]
  152.         [-mips16] [-no-mips16]
  153.         [-mips3d] [-no-mips3d]
  154.         [-mdmx] [-no-mdmx]
  155.         [-mdebug] [-no-mdebug]
  156.         [-mpdr] [-mno-pdr]
  157.  
  158.      _Target MMIX options:_
  159.         [-fixed-special-register-names] [-globalize-symbols]
  160.         [-gnu-syntax] [-relax] [-no-predefined-symbols]
  161.         [-no-expand] [-no-merge-gregs] [-x]
  162.         [-linker-allocated-gregs]
  163.  
  164.      _Target PDP11 options:_
  165.         [-mpic|-mno-pic] [-mall] [-mno-extensions]
  166.         [-mEXTENSION|-mno-EXTENSION]
  167.         [-mCPU] [-mMACHINE]
  168.  
  169.      _Target picoJava options:_
  170.         [-mb|-me]
  171.  
  172.      _Target PowerPC options:_
  173.         [-mpwrx|-mpwr2|-mpwr|-m601|-mppc|-mppc32|-m603|-m604|
  174.          -m403|-m405|-mppc64|-m620|-mppc64bridge|-mbooke|
  175.          -mbooke32|-mbooke64]
  176.         [-mcom|-many|-maltivec] [-memb]
  177.         [-mregnames|-mno-regnames]
  178.         [-mrelocatable|-mrelocatable-lib]
  179.         [-mlittle|-mlittle-endian|-mbig|-mbig-endian]
  180.         [-msolaris|-mno-solaris]
  181.  
  182.      _Target SPARC options:_
  183.         [-Av6|-Av7|-Av8|-Asparclet|-Asparclite
  184.          -Av8plus|-Av8plusa|-Av9|-Av9a]
  185.         [-xarch=v8plus|-xarch=v8plusa] [-bump]
  186.         [-32|-64]
  187.  
  188.      _Target TIC54X options:_
  189.       [-mcpu=54[123589]|-mcpu=54[56]lp] [-mfar-mode|-mf]
  190.       [-merrors-to-file <FILENAME>|-me <FILENAME>]
  191.  
  192.      _Target Xtensa options:_
  193.       [-[no-]text-section-literals] [-[no-]absolute-literals]
  194.       [-[no-]target-align] [-[no-]longcalls]
  195.       [-[no-]transform]
  196.       [-rename-section OLDNAME=NEWNAME]
  197.  
  198. `-a[cdhlmns]'
  199.      Turn on listings, in any of a variety of ways:
  200.  
  201.     `-ac'
  202.           omit false conditionals
  203.  
  204.     `-ad'
  205.           omit debugging directives
  206.  
  207.     `-ah'
  208.           include high-level source
  209.  
  210.     `-al'
  211.           include assembly
  212.  
  213.     `-am'
  214.           include macro expansions
  215.  
  216.     `-an'
  217.           omit forms processing
  218.  
  219.     `-as'
  220.           include symbols
  221.  
  222.     `=file'
  223.           set the name of the listing file
  224.  
  225.      You may combine these options; for example, use `-aln' for assembly
  226.      listing without forms processing.  The `=file' option, if used,
  227.      must be the last one.  By itself, `-a' defaults to `-ahls'.
  228.  
  229. `--alternate'
  230.      Begin in alternate macro mode, see *Note `.altmacro': Altmacro.
  231.  
  232. `-D'
  233.      Ignored.  This option is accepted for script compatibility with
  234.      calls to other assemblers.
  235.  
  236. `--defsym SYM=VALUE'
  237.      Define the symbol SYM to be VALUE before assembling the input file.
  238.      VALUE must be an integer constant.  As in C, a leading `0x'
  239.      indicates a hexadecimal value, and a leading `0' indicates an
  240.      octal value.
  241.  
  242. `-f'
  243.      "fast"--skip whitespace and comment preprocessing (assume source is
  244.      compiler output).
  245.  
  246. `-g'
  247. `--gen-debug'
  248.      Generate debugging information for each assembler source line
  249.      using whichever debug format is preferred by the target.  This
  250.      currently means either STABS, ECOFF or DWARF2.
  251.  
  252. `--gstabs'
  253.      Generate stabs debugging information for each assembler line.  This
  254.      may help debugging assembler code, if the debugger can handle it.
  255.  
  256. `--gstabs+'
  257.      Generate stabs debugging information for each assembler line, with
  258.      GNU extensions that probably only gdb can handle, and that could
  259.      make other debuggers crash or refuse to read your program.  This
  260.      may help debugging assembler code.  Currently the only GNU
  261.      extension is the location of the current working directory at
  262.      assembling time.
  263.  
  264. `--gdwarf-2'
  265.      Generate DWARF2 debugging information for each assembler line.
  266.      This may help debugging assembler code, if the debugger can handle
  267.      it.  Note--this option is only supported by some targets, not all
  268.      of them.
  269.  
  270. `--help'
  271.      Print a summary of the command line options and exit.
  272.  
  273. `--target-help'
  274.      Print a summary of all target specific options and exit.
  275.  
  276. `-I DIR'
  277.      Add directory DIR to the search list for `.include' directives.
  278.  
  279. `-J'
  280.      Don't warn about signed overflow.
  281.  
  282. `-K'
  283.      Issue warnings when difference tables altered for long
  284.      displacements.
  285.  
  286. `-L'
  287. `--keep-locals'
  288.      Keep (in the symbol table) local symbols.  On traditional a.out
  289.      systems these start with `L', but different systems have different
  290.      local label prefixes.
  291.  
  292. `--listing-lhs-width=NUMBER'
  293.      Set the maximum width, in words, of the output data column for an
  294.      assembler listing to NUMBER.
  295.  
  296. `--listing-lhs-width2=NUMBER'
  297.      Set the maximum width, in words, of the output data column for
  298.      continuation lines in an assembler listing to NUMBER.
  299.  
  300. `--listing-rhs-width=NUMBER'
  301.      Set the maximum width of an input source line, as displayed in a
  302.      listing, to NUMBER bytes.
  303.  
  304. `--listing-cont-lines=NUMBER'
  305.      Set the maximum number of lines printed in a listing for a single
  306.      line of input to NUMBER + 1.
  307.  
  308. `-o OBJFILE'
  309.      Name the object-file output from `as' OBJFILE.
  310.  
  311. `-R'
  312.      Fold the data section into the text section.
  313.  
  314. `--statistics'
  315.      Print the maximum space (in bytes) and total time (in seconds)
  316.      used by assembly.
  317.  
  318. `--strip-local-absolute'
  319.      Remove local absolute symbols from the outgoing symbol table.
  320.  
  321. `-v'
  322. `-version'
  323.      Print the `as' version.
  324.  
  325. `--version'
  326.      Print the `as' version and exit.
  327.  
  328. `-W'
  329. `--no-warn'
  330.      Suppress warning messages.
  331.  
  332. `--fatal-warnings'
  333.      Treat warnings as errors.
  334.  
  335. `--warn'
  336.      Don't suppress warning messages or treat them as errors.
  337.  
  338. `-w'
  339.      Ignored.
  340.  
  341. `-x'
  342.      Ignored.
  343.  
  344. `-Z'
  345.      Generate an object file even after errors.
  346.  
  347. `-- | FILES ...'
  348.      Standard input, or source files to assemble.
  349.  
  350.  
  351.    The following options are available when as is configured for an ARC
  352. processor.
  353.  
  354. `-marc[5|6|7|8]'
  355.      This option selects the core processor variant.
  356.  
  357. `-EB | -EL'
  358.      Select either big-endian (-EB) or little-endian (-EL) output.
  359.  
  360.    The following options are available when as is configured for the ARM
  361. processor family.
  362.  
  363. `-mcpu=PROCESSOR[+EXTENSION...]'
  364.      Specify which ARM processor variant is the target.
  365.  
  366. `-march=ARCHITECTURE[+EXTENSION...]'
  367.      Specify which ARM architecture variant is used by the target.
  368.  
  369. `-mfpu=FLOATING-POINT-FORMAT'
  370.      Select which Floating Point architecture is the target.
  371.  
  372. `-mfloat-abi=ABI'
  373.      Select which floating point ABI is in use.
  374.  
  375. `-mthumb'
  376.      Enable Thumb only instruction decoding.
  377.  
  378. `-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant'
  379.      Select which procedure calling convention is in use.
  380.  
  381. `-EB | -EL'
  382.      Select either big-endian (-EB) or little-endian (-EL) output.
  383.  
  384. `-mthumb-interwork'
  385.      Specify that the code has been generated with interworking between
  386.      Thumb and ARM code in mind.
  387.  
  388. `-k'
  389.      Specify that PIC code has been generated.
  390.  
  391.    See the info pages for documentation of the CRIS-specific options.
  392.  
  393.    The following options are available when as is configured for a D10V
  394. processor.
  395. `-O'
  396.      Optimize output by parallelizing instructions.
  397.  
  398.    The following options are available when as is configured for a D30V
  399. processor.
  400. `-O'
  401.      Optimize output by parallelizing instructions.
  402.  
  403. `-n'
  404.      Warn when nops are generated.
  405.  
  406. `-N'
  407.      Warn when a nop after a 32-bit multiply instruction is generated.
  408.  
  409.    The following options are available when as is configured for the
  410. Intel 80960 processor.
  411.  
  412. `-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC'
  413.      Specify which variant of the 960 architecture is the target.
  414.  
  415. `-b'
  416.      Add code to collect statistics about branches taken.
  417.  
  418. `-no-relax'
  419.      Do not alter compare-and-branch instructions for long
  420.      displacements; error if necessary.
  421.  
  422.  
  423.    The following options are available when as is configured for the
  424. Ubicom IP2K series.
  425.  
  426. `-mip2022ext'
  427.      Specifies that the extended IP2022 instructions are allowed.
  428.  
  429. `-mip2022'
  430.      Restores the default behaviour, which restricts the permitted
  431.      instructions to just the basic IP2022 ones.
  432.  
  433.  
  434.    The following options are available when as is configured for the
  435. Renesas M32R (formerly Mitsubishi M32R) series.
  436.  
  437. `--m32rx'
  438.      Specify which processor in the M32R family is the target.  The
  439.      default is normally the M32R, but this option changes it to the
  440.      M32RX.
  441.  
  442. `--warn-explicit-parallel-conflicts or --Wp'
  443.      Produce warning messages when questionable parallel constructs are
  444.      encountered.
  445.  
  446. `--no-warn-explicit-parallel-conflicts or --Wnp'
  447.      Do not produce warning messages when questionable parallel
  448.      constructs are encountered.
  449.  
  450.  
  451.    The following options are available when as is configured for the
  452. Motorola 68000 series.
  453.  
  454. `-l'
  455.      Shorten references to undefined symbols, to one word instead of
  456.      two.
  457.  
  458. `-m68000 | -m68008 | -m68010 | -m68020 | -m68030'
  459. `| -m68040 | -m68060 | -m68302 | -m68331 | -m68332'
  460. `| -m68333 | -m68340 | -mcpu32 | -m5200'
  461.      Specify what processor in the 68000 family is the target.  The
  462.      default is normally the 68020, but this can be changed at
  463.      configuration time.
  464.  
  465. `-m68881 | -m68882 | -mno-68881 | -mno-68882'
  466.      The target machine does (or does not) have a floating-point
  467.      coprocessor.  The default is to assume a coprocessor for 68020,
  468.      68030, and cpu32.  Although the basic 68000 is not compatible with
  469.      the 68881, a combination of the two can be specified, since it's
  470.      possible to do emulation of the coprocessor instructions with the
  471.      main processor.
  472.  
  473. `-m68851 | -mno-68851'
  474.      The target machine does (or does not) have a memory-management
  475.      unit coprocessor.  The default is to assume an MMU for 68020 and
  476.      up.
  477.  
  478.  
  479.    For details about the PDP-11 machine dependent features options, see
  480. *Note PDP-11-Options::.
  481.  
  482. `-mpic | -mno-pic'
  483.      Generate position-independent (or position-dependent) code.  The
  484.      default is `-mpic'.
  485.  
  486. `-mall'
  487. `-mall-extensions'
  488.      Enable all instruction set extensions.  This is the default.
  489.  
  490. `-mno-extensions'
  491.      Disable all instruction set extensions.
  492.  
  493. `-mEXTENSION | -mno-EXTENSION'
  494.      Enable (or disable) a particular instruction set extension.
  495.  
  496. `-mCPU'
  497.      Enable the instruction set extensions supported by a particular
  498.      CPU, and disable all other extensions.
  499.  
  500. `-mMACHINE'
  501.      Enable the instruction set extensions supported by a particular
  502.      machine model, and disable all other extensions.
  503.  
  504.    The following options are available when as is configured for a
  505. picoJava processor.
  506.  
  507. `-mb'
  508.      Generate "big endian" format output.
  509.  
  510. `-ml'
  511.      Generate "little endian" format output.
  512.  
  513.  
  514.    The following options are available when as is configured for the
  515. Motorola 68HC11 or 68HC12 series.
  516.  
  517. `-m68hc11 | -m68hc12 | -m68hcs12'
  518.      Specify what processor is the target.  The default is defined by
  519.      the configuration option when building the assembler.
  520.  
  521. `-mshort'
  522.      Specify to use the 16-bit integer ABI.
  523.  
  524. `-mlong'
  525.      Specify to use the 32-bit integer ABI.
  526.  
  527. `-mshort-double'
  528.      Specify to use the 32-bit double ABI.
  529.  
  530. `-mlong-double'
  531.      Specify to use the 64-bit double ABI.
  532.  
  533. `--force-long-branchs'
  534.      Relative branches are turned into absolute ones. This concerns
  535.      conditional branches, unconditional branches and branches to a sub
  536.      routine.
  537.  
  538. `-S | --short-branchs'
  539.      Do not turn relative branchs into absolute ones when the offset is
  540.      out of range.
  541.  
  542. `--strict-direct-mode'
  543.      Do not turn the direct addressing mode into extended addressing
  544.      mode when the instruction does not support direct addressing mode.
  545.  
  546. `--print-insn-syntax'
  547.      Print the syntax of instruction in case of error.
  548.  
  549. `--print-opcodes'
  550.      print the list of instructions with syntax and then exit.
  551.  
  552. `--generate-example'
  553.      print an example of instruction for each possible instruction and
  554.      then exit.  This option is only useful for testing `as'.
  555.  
  556.  
  557.    The following options are available when `as' is configured for the
  558. SPARC architecture:
  559.  
  560. `-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite'
  561. `-Av8plus | -Av8plusa | -Av9 | -Av9a'
  562.      Explicitly select a variant of the SPARC architecture.
  563.  
  564.      `-Av8plus' and `-Av8plusa' select a 32 bit environment.  `-Av9'
  565.      and `-Av9a' select a 64 bit environment.
  566.  
  567.      `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with
  568.      UltraSPARC extensions.
  569.  
  570. `-xarch=v8plus | -xarch=v8plusa'
  571.      For compatibility with the Solaris v9 assembler.  These options are
  572.      equivalent to -Av8plus and -Av8plusa, respectively.
  573.  
  574. `-bump'
  575.      Warn when the assembler switches to another architecture.
  576.  
  577.    The following options are available when as is configured for the
  578. 'c54x architecture.
  579.  
  580. `-mfar-mode'
  581.      Enable extended addressing mode.  All addresses and relocations
  582.      will assume extended addressing (usually 23 bits).
  583.  
  584. `-mcpu=CPU_VERSION'
  585.      Sets the CPU version being compiled for.
  586.  
  587. `-merrors-to-file FILENAME'
  588.      Redirect error output to a file, for broken systems which don't
  589.      support such behaviour in the shell.
  590.  
  591.    The following options are available when as is configured for a MIPS
  592. processor.
  593.  
  594. `-G NUM'
  595.      This option sets the largest size of an object that can be
  596.      referenced implicitly with the `gp' register.  It is only accepted
  597.      for targets that use ECOFF format, such as a DECstation running
  598.      Ultrix.  The default value is 8.
  599.  
  600. `-EB'
  601.      Generate "big endian" format output.
  602.  
  603. `-EL'
  604.      Generate "little endian" format output.
  605.  
  606. `-mips1'
  607. `-mips2'
  608. `-mips3'
  609. `-mips4'
  610. `-mips5'
  611. `-mips32'
  612. `-mips32r2'
  613. `-mips64'
  614. `-mips64r2'
  615.      Generate code for a particular MIPS Instruction Set Architecture
  616.      level.  `-mips1' is an alias for `-march=r3000', `-mips2' is an
  617.      alias for `-march=r6000', `-mips3' is an alias for `-march=r4000'
  618.      and `-mips4' is an alias for `-march=r8000'.  `-mips5', `-mips32',
  619.      `-mips32r2', `-mips64', and `-mips64r2' correspond to generic
  620.      `MIPS V', `MIPS32', `MIPS32 Release 2', `MIPS64', and `MIPS64
  621.      Release 2' ISA processors, respectively.
  622.  
  623. `-march=CPU'
  624.      Generate code for a particular MIPS cpu.
  625.  
  626. `-mtune=CPU'
  627.      Schedule and tune for a particular MIPS cpu.
  628.  
  629. `-mfix7000'
  630. `-mno-fix7000'
  631.      Cause nops to be inserted if the read of the destination register
  632.      of an mfhi or mflo instruction occurs in the following two
  633.      instructions.
  634.  
  635. `-mdebug'
  636. `-no-mdebug'
  637.      Cause stabs-style debugging output to go into an ECOFF-style
  638.      .mdebug section instead of the standard ELF .stabs sections.
  639.  
  640. `-mpdr'
  641. `-mno-pdr'
  642.      Control generation of `.pdr' sections.
  643.  
  644. `-mgp32'
  645. `-mfp32'
  646.      The register sizes are normally inferred from the ISA and ABI, but
  647.      these flags force a certain group of registers to be treated as 32
  648.      bits wide at all times.  `-mgp32' controls the size of
  649.      general-purpose registers and `-mfp32' controls the size of
  650.      floating-point registers.
  651.  
  652. `-mips16'
  653. `-no-mips16'
  654.      Generate code for the MIPS 16 processor.  This is equivalent to
  655.      putting `.set mips16' at the start of the assembly file.
  656.      `-no-mips16' turns off this option.
  657.  
  658. `-mips3d'
  659. `-no-mips3d'
  660.      Generate code for the MIPS-3D Application Specific Extension.
  661.      This tells the assembler to accept MIPS-3D instructions.
  662.      `-no-mips3d' turns off this option.
  663.  
  664. `-mdmx'
  665. `-no-mdmx'
  666.      Generate code for the MDMX Application Specific Extension.  This
  667.      tells the assembler to accept MDMX instructions.  `-no-mdmx' turns
  668.      off this option.
  669.  
  670. `--construct-floats'
  671. `--no-construct-floats'
  672.      The `--no-construct-floats' option disables the construction of
  673.      double width floating point constants by loading the two halves of
  674.      the value into the two single width floating point registers that
  675.      make up the double width register.  By default
  676.      `--construct-floats' is selected, allowing construction of these
  677.      floating point constants.
  678.  
  679. `--emulation=NAME'
  680.      This option causes `as' to emulate `as' configured for some other
  681.      target, in all respects, including output format (choosing between
  682.      ELF and ECOFF only), handling of pseudo-opcodes which may generate
  683.      debugging information or store symbol table information, and
  684.      default endianness.  The available configuration names are:
  685.      `mipsecoff', `mipself', `mipslecoff', `mipsbecoff', `mipslelf',
  686.      `mipsbelf'.  The first two do not alter the default endianness
  687.      from that of the primary target for which the assembler was
  688.      configured; the others change the default to little- or big-endian
  689.      as indicated by the `b' or `l' in the name.  Using `-EB' or `-EL'
  690.      will override the endianness selection in any case.
  691.  
  692.      This option is currently supported only when the primary target
  693.      `as' is configured for is a MIPS ELF or ECOFF target.
  694.      Furthermore, the primary target or others specified with
  695.      `--enable-targets=...' at configuration time must include support
  696.      for the other format, if both are to be available.  For example,
  697.      the Irix 5 configuration includes support for both.
  698.  
  699.      Eventually, this option will support more configurations, with more
  700.      fine-grained control over the assembler's behavior, and will be
  701.      supported for more processors.
  702.  
  703. `-nocpp'
  704.      `as' ignores this option.  It is accepted for compatibility with
  705.      the native tools.
  706.  
  707. `--trap'
  708. `--no-trap'
  709. `--break'
  710. `--no-break'
  711.      Control how to deal with multiplication overflow and division by
  712.      zero.  `--trap' or `--no-break' (which are synonyms) take a trap
  713.      exception (and only work for Instruction Set Architecture level 2
  714.      and higher); `--break' or `--no-trap' (also synonyms, and the
  715.      default) take a break exception.
  716.  
  717. `-n'
  718.      When this option is used, `as' will issue a warning every time it
  719.      generates a nop instruction from a macro.
  720.  
  721.    The following options are available when as is configured for an
  722. MCore processor.
  723.  
  724. `-jsri2bsr'
  725. `-nojsri2bsr'
  726.      Enable or disable the JSRI to BSR transformation.  By default this
  727.      is enabled.  The command line option `-nojsri2bsr' can be used to
  728.      disable it.
  729.  
  730. `-sifilter'
  731. `-nosifilter'
  732.      Enable or disable the silicon filter behaviour.  By default this
  733.      is disabled.  The default can be overridden by the `-sifilter'
  734.      command line option.
  735.  
  736. `-relax'
  737.      Alter jump instructions for long displacements.
  738.  
  739. `-mcpu=[210|340]'
  740.      Select the cpu type on the target hardware.  This controls which
  741.      instructions can be assembled.
  742.  
  743. `-EB'
  744.      Assemble for a big endian target.
  745.  
  746. `-EL'
  747.      Assemble for a little endian target.
  748.  
  749.  
  750.    See the info pages for documentation of the MMIX-specific options.
  751.  
  752.    The following options are available when as is configured for an
  753. Xtensa processor.
  754.  
  755. `--text-section-literals | --no-text-section-literals'
  756.      With `--text-section-literals', literal pools are interspersed in
  757.      the text section.  The default is `--no-text-section-literals',
  758.      which places literals in a separate section in the output file.
  759.      These options only affect literals referenced via PC-relative
  760.      `L32R' instructions; literals for absolute mode `L32R'
  761.      instructions are handled separately.
  762.  
  763. `--absolute-literals | --no-absolute-literals'
  764.      Indicate to the assembler whether `L32R' instructions use absolute
  765.      or PC-relative addressing.  The default is to assume absolute
  766.      addressing if the Xtensa processor includes the absolute `L32R'
  767.      addressing option.  Otherwise, only the PC-relative `L32R' mode
  768.      can be used.
  769.  
  770. `--target-align | --no-target-align'
  771.      Enable or disable automatic alignment to reduce branch penalties
  772.      at the expense of some code density.  The default is
  773.      `--target-align'.
  774.  
  775. `--longcalls | --no-longcalls'
  776.      Enable or disable transformation of call instructions to allow
  777.      calls across a greater range of addresses.  The default is
  778.      `--no-longcalls'.
  779.  
  780. `--transform | --no-transform'
  781.      Enable or disable all assembler transformations of Xtensa
  782.      instructions.  The default is `--transform'; `--no-transform'
  783.      should be used only in the rare cases when the instructions must
  784.      be exactly as specified in the assembly source.
  785.  
  786. * Menu:
  787.  
  788. * Manual::                      Structure of this Manual
  789. * GNU Assembler::               The GNU Assembler
  790. * Object Formats::              Object File Formats
  791. * Command Line::                Command Line
  792. * Input Files::                 Input Files
  793. * Object::                      Output (Object) File
  794. * Errors::                      Error and Warning Messages
  795.  
  796. 
  797. File: as.info,  Node: Manual,  Next: GNU Assembler,  Up: Overview
  798.  
  799. 1.1 Structure of this Manual
  800. ============================
  801.  
  802. This manual is intended to describe what you need to know to use GNU
  803. `as'.  We cover the syntax expected in source files, including notation
  804. for symbols, constants, and expressions; the directives that `as'
  805. understands; and of course how to invoke `as'.
  806.  
  807.    This manual also describes some of the machine-dependent features of
  808. various flavors of the assembler.
  809.  
  810.    On the other hand, this manual is _not_ intended as an introduction
  811. to programming in assembly language--let alone programming in general!
  812. In a similar vein, we make no attempt to introduce the machine
  813. architecture; we do _not_ describe the instruction set, standard
  814. mnemonics, registers or addressing modes that are standard to a
  815. particular architecture.  You may want to consult the manufacturer's
  816. machine architecture manual for this information.
  817.  
  818. 
  819. File: as.info,  Node: GNU Assembler,  Next: Object Formats,  Prev: Manual,  Up: Overview
  820.  
  821. 1.2 The GNU Assembler
  822. =====================
  823.  
  824. GNU `as' is really a family of assemblers.  If you use (or have used)
  825. the GNU assembler on one architecture, you should find a fairly similar
  826. environment when you use it on another architecture.  Each version has
  827. much in common with the others, including object file formats, most
  828. assembler directives (often called "pseudo-ops") and assembler syntax.
  829.  
  830.    `as' is primarily intended to assemble the output of the GNU C
  831. compiler `gcc' for use by the linker `ld'.  Nevertheless, we've tried
  832. to make `as' assemble correctly everything that other assemblers for
  833. the same machine would assemble.  Any exceptions are documented
  834. explicitly (*note Machine Dependencies::).  This doesn't mean `as'
  835. always uses the same syntax as another assembler for the same
  836. architecture; for example, we know of several incompatible versions of
  837. 680x0 assembly language syntax.
  838.  
  839.    Unlike older assemblers, `as' is designed to assemble a source
  840. program in one pass of the source file.  This has a subtle impact on the
  841. `.org' directive (*note `.org': Org.).
  842.  
  843. 
  844. File: as.info,  Node: Object Formats,  Next: Command Line,  Prev: GNU Assembler,  Up: Overview
  845.  
  846. 1.3 Object File Formats
  847. =======================
  848.  
  849. The GNU assembler can be configured to produce several alternative
  850. object file formats.  For the most part, this does not affect how you
  851. write assembly language programs; but directives for debugging symbols
  852. are typically different in different file formats.  *Note Symbol
  853. Attributes: Symbol Attributes.
  854.  
  855. 
  856. File: as.info,  Node: Command Line,  Next: Input Files,  Prev: Object Formats,  Up: Overview
  857.  
  858. 1.4 Command Line
  859. ================
  860.  
  861. After the program name `as', the command line may contain options and
  862. file names.  Options may appear in any order, and may be before, after,
  863. or between file names.  The order of file names is significant.
  864.  
  865.    `--' (two hyphens) by itself names the standard input file
  866. explicitly, as one of the files for `as' to assemble.
  867.  
  868.    Except for `--' any command line argument that begins with a hyphen
  869. (`-') is an option.  Each option changes the behavior of `as'.  No
  870. option changes the way another option works.  An option is a `-'
  871. followed by one or more letters; the case of the letter is important.
  872. All options are optional.
  873.  
  874.    Some options expect exactly one file name to follow them.  The file
  875. name may either immediately follow the option's letter (compatible with
  876. older assemblers) or it may be the next command argument (GNU
  877. standard).  These two command lines are equivalent:
  878.  
  879.      as -o my-object-file.o mumble.s
  880.      as -omy-object-file.o mumble.s
  881.  
  882. 
  883. File: as.info,  Node: Input Files,  Next: Object,  Prev: Command Line,  Up: Overview
  884.  
  885. 1.5 Input Files
  886. ===============
  887.  
  888. We use the phrase "source program", abbreviated "source", to describe
  889. the program input to one run of `as'.  The program may be in one or
  890. more files; how the source is partitioned into files doesn't change the
  891. meaning of the source.
  892.  
  893.    The source program is a concatenation of the text in all the files,
  894. in the order specified.
  895.  
  896.    Each time you run `as' it assembles exactly one source program.  The
  897. source program is made up of one or more files.  (The standard input is
  898. also a file.)
  899.  
  900.    You give `as' a command line that has zero or more input file names.
  901. The input files are read (from left file name to right).  A command
  902. line argument (in any position) that has no special meaning is taken to
  903. be an input file name.
  904.  
  905.    If you give `as' no file names it attempts to read one input file
  906. from the `as' standard input, which is normally your terminal.  You may
  907. have to type <ctl-D> to tell `as' there is no more program to assemble.
  908.  
  909.    Use `--' if you need to explicitly name the standard input file in
  910. your command line.
  911.  
  912.    If the source is empty, `as' produces a small, empty object file.
  913.  
  914. Filenames and Line-numbers
  915. --------------------------
  916.  
  917. There are two ways of locating a line in the input file (or files) and
  918. either may be used in reporting error messages.  One way refers to a
  919. line number in a physical file; the other refers to a line number in a
  920. "logical" file.  *Note Error and Warning Messages: Errors.
  921.  
  922.    "Physical files" are those files named in the command line given to
  923. `as'.
  924.  
  925.    "Logical files" are simply names declared explicitly by assembler
  926. directives; they bear no relation to physical files.  Logical file
  927. names help error messages reflect the original source file, when `as'
  928. source is itself synthesized from other files.  `as' understands the
  929. `#' directives emitted by the `gcc' preprocessor.  See also *Note
  930. `.file': File.
  931.  
  932. 
  933. File: as.info,  Node: Object,  Next: Errors,  Prev: Input Files,  Up: Overview
  934.  
  935. 1.6 Output (Object) File
  936. ========================
  937.  
  938. Every time you run `as' it produces an output file, which is your
  939. assembly language program translated into numbers.  This file is the
  940. object file.  Its default name is `a.out', or `b.out' when `as' is
  941. configured for the Intel 80960.  You can give it another name by using
  942. the `-o' option.  Conventionally, object file names end with `.o'.  The
  943. default name is used for historical reasons: older assemblers were
  944. capable of assembling self-contained programs directly into a runnable
  945. program.  (For some formats, this isn't currently possible, but it can
  946. be done for the `a.out' format.)
  947.  
  948.    The object file is meant for input to the linker `ld'.  It contains
  949. assembled program code, information to help `ld' integrate the
  950. assembled program into a runnable file, and (optionally) symbolic
  951. information for the debugger.
  952.  
  953. 
  954. File: as.info,  Node: Errors,  Prev: Object,  Up: Overview
  955.  
  956. 1.7 Error and Warning Messages
  957. ==============================
  958.  
  959. `as' may write warnings and error messages to the standard error file
  960. (usually your terminal).  This should not happen when  a compiler runs
  961. `as' automatically.  Warnings report an assumption made so that `as'
  962. could keep assembling a flawed program; errors report a grave problem
  963. that stops the assembly.
  964.  
  965.    Warning messages have the format
  966.  
  967.      file_name:NNN:Warning Message Text
  968.  
  969. (where NNN is a line number).  If a logical file name has been given
  970. (*note `.file': File.) it is used for the filename, otherwise the name
  971. of the current input file is used.  If a logical line number was given
  972. (*note `.line': Line.)  then it is used to calculate the number printed,
  973. otherwise the actual line in the current source file is printed.  The
  974. message text is intended to be self explanatory (in the grand Unix
  975. tradition).
  976.  
  977.    Error messages have the format
  978.      file_name:NNN:FATAL:Error Message Text
  979.    The file name and line number are derived as for warning messages.
  980. The actual message text may be rather less explanatory because many of
  981. them aren't supposed to happen.
  982.  
  983. 
  984. File: as.info,  Node: Invoking,  Next: Syntax,  Prev: Overview,  Up: Top
  985.  
  986. 2 Command-Line Options
  987. **********************
  988.  
  989. This chapter describes command-line options available in _all_ versions
  990. of the GNU assembler; *note Machine Dependencies::, for options specific
  991. to particular machine architectures.
  992.  
  993.    If you are invoking `as' via the GNU C compiler, you can use the
  994. `-Wa' option to pass arguments through to the assembler.  The assembler
  995. arguments must be separated from each other (and the `-Wa') by commas.
  996. For example:
  997.  
  998.      gcc -c -g -O -Wa,-alh,-L file.c
  999.  
  1000. This passes two options to the assembler: `-alh' (emit a listing to
  1001. standard output with high-level and assembly source) and `-L' (retain
  1002. local symbols in the symbol table).
  1003.  
  1004.    Usually you do not need to use this `-Wa' mechanism, since many
  1005. compiler command-line options are automatically passed to the assembler
  1006. by the compiler.  (You can call the GNU compiler driver with the `-v'
  1007. option to see precisely what options it passes to each compilation
  1008. pass, including the assembler.)
  1009.  
  1010. * Menu:
  1011.  
  1012. * a::             -a[cdhlns] enable listings
  1013. * alternate::     --alternate enable alternate macro syntax
  1014. * D::             -D for compatibility
  1015. * f::             -f to work faster
  1016. * I::             -I for .include search path
  1017.  
  1018. * K::             -K for difference tables
  1019.  
  1020. * L::             -L to retain local labels
  1021. * listing::       --listing-XXX to configure listing output
  1022. * M::          -M or --mri to assemble in MRI compatibility mode
  1023. * MD::            --MD for dependency tracking
  1024. * o::             -o to name the object file
  1025. * R::             -R to join data and text sections
  1026. * statistics::    --statistics to see statistics about assembly
  1027. * traditional-format:: --traditional-format for compatible output
  1028. * v::             -v to announce version
  1029. * W::             -W, --no-warn, --warn, --fatal-warnings to control warnings
  1030. * Z::             -Z to make object file even after errors
  1031.  
  1032. 
  1033. File: as.info,  Node: a,  Next: alternate,  Up: Invoking
  1034.  
  1035. 2.1 Enable Listings: `-a[cdhlns]'
  1036. =================================
  1037.  
  1038. These options enable listing output from the assembler.  By itself,
  1039. `-a' requests high-level, assembly, and symbols listing.  You can use
  1040. other letters to select specific options for the list: `-ah' requests a
  1041. high-level language listing, `-al' requests an output-program assembly
  1042. listing, and `-as' requests a symbol table listing.  High-level
  1043. listings require that a compiler debugging option like `-g' be used,
  1044. and that assembly listings (`-al') be requested also.
  1045.  
  1046.    Use the `-ac' option to omit false conditionals from a listing.  Any
  1047. lines which are not assembled because of a false `.if' (or `.ifdef', or
  1048. any other conditional), or a true `.if' followed by an `.else', will be
  1049. omitted from the listing.
  1050.  
  1051.    Use the `-ad' option to omit debugging directives from the listing.
  1052.  
  1053.    Once you have specified one of these options, you can further control
  1054. listing output and its appearance using the directives `.list',
  1055. `.nolist', `.psize', `.eject', `.title', and `.sbttl'.  The `-an'
  1056. option turns off all forms processing.  If you do not request listing
  1057. output with one of the `-a' options, the listing-control directives
  1058. have no effect.
  1059.  
  1060.    The letters after `-a' may be combined into one option, _e.g._,
  1061. `-aln'.
  1062.  
  1063.    Note if the assembler source is coming from the standard input (eg
  1064. because it is being created by `gcc' and the `-pipe' command line switch
  1065. is being used) then the listing will not contain any comments or
  1066. preprocessor directives.  This is because the listing code buffers
  1067. input source lines from stdin only after they have been preprocessed by
  1068. the assembler.  This reduces memory usage and makes the code more
  1069. efficient.
  1070.  
  1071. 
  1072. File: as.info,  Node: alternate,  Next: D,  Prev: a,  Up: Invoking
  1073.  
  1074. 2.2 `--alternate'
  1075. =================
  1076.  
  1077. Begin in alternate macro mode, see *Note `.altmacro': Altmacro.
  1078.  
  1079. 
  1080. File: as.info,  Node: D,  Next: f,  Prev: alternate,  Up: Invoking
  1081.  
  1082. 2.3 `-D'
  1083. ========
  1084.  
  1085. This option has no effect whatsoever, but it is accepted to make it more
  1086. likely that scripts written for other assemblers also work with `as'.
  1087.  
  1088. 
  1089. File: as.info,  Node: f,  Next: I,  Prev: D,  Up: Invoking
  1090.  
  1091. 2.4 Work Faster: `-f'
  1092. =====================
  1093.  
  1094. `-f' should only be used when assembling programs written by a
  1095. (trusted) compiler.  `-f' stops the assembler from doing whitespace and
  1096. comment preprocessing on the input file(s) before assembling them.
  1097. *Note Preprocessing: Preprocessing.
  1098.  
  1099.      _Warning:_ if you use `-f' when the files actually need to be
  1100.      preprocessed (if they contain comments, for example), `as' does
  1101.      not work correctly.
  1102.  
  1103. 
  1104. File: as.info,  Node: I,  Next: K,  Prev: f,  Up: Invoking
  1105.  
  1106. 2.5 `.include' Search Path: `-I' PATH
  1107. =====================================
  1108.  
  1109. Use this option to add a PATH to the list of directories `as' searches
  1110. for files specified in `.include' directives (*note `.include':
  1111. Include.).  You may use `-I' as many times as necessary to include a
  1112. variety of paths.  The current working directory is always searched
  1113. first; after that, `as' searches any `-I' directories in the same order
  1114. as they were specified (left to right) on the command line.
  1115.  
  1116. 
  1117. File: as.info,  Node: K,  Next: L,  Prev: I,  Up: Invoking
  1118.  
  1119. 2.6 Difference Tables: `-K'
  1120. ===========================
  1121.  
  1122. `as' sometimes alters the code emitted for directives of the form
  1123. `.word SYM1-SYM2'; *note `.word': Word.  You can use the `-K' option if
  1124. you want a warning issued when this is done.
  1125.  
  1126. 
  1127. File: as.info,  Node: L,  Next: listing,  Prev: K,  Up: Invoking
  1128.  
  1129. 2.7 Include Local Labels: `-L'
  1130. ==============================
  1131.  
  1132. Labels beginning with `L' (upper case only) are called "local labels".
  1133. *Note Symbol Names::.  Normally you do not see such labels when
  1134. debugging, because they are intended for the use of programs (like
  1135. compilers) that compose assembler programs, not for your notice.
  1136. Normally both `as' and `ld' discard such labels, so you do not normally
  1137. debug with them.
  1138.  
  1139.    This option tells `as' to retain those `L...' symbols in the object
  1140. file.  Usually if you do this you also tell the linker `ld' to preserve
  1141. symbols whose names begin with `L'.
  1142.  
  1143.    By default, a local label is any label beginning with `L', but each
  1144. target is allowed to redefine the local label prefix.  On the HPPA
  1145. local labels begin with `L$'.
  1146.  
  1147. 
  1148. File: as.info,  Node: listing,  Next: M,  Prev: L,  Up: Invoking
  1149.  
  1150. 2.8 Configuring listing output: `--listing'
  1151. ===========================================
  1152.  
  1153. The listing feature of the assembler can be enabled via the command
  1154. line switch `-a' (*note a::).  This feature combines the input source
  1155. file(s) with a hex dump of the corresponding locations in the output
  1156. object file, and displays them as a listing file.  The format of this
  1157. listing can be controlled by pseudo ops inside the assembler source
  1158. (*note List:: *note Title:: *note Sbttl:: *note Psize:: *note Eject::)
  1159. and also by the following switches:
  1160.  
  1161. `--listing-lhs-width=`number''
  1162.      Sets the maximum width, in words, of the first line of the hex
  1163.      byte dump.  This dump appears on the left hand side of the listing
  1164.      output.
  1165.  
  1166. `--listing-lhs-width2=`number''
  1167.      Sets the maximum width, in words, of any further lines of the hex
  1168.      byte dump for a given input source line.  If this value is not
  1169.      specified, it defaults to being the same as the value specified
  1170.      for `--listing-lhs-width'.  If neither switch is used the default
  1171.      is to one.
  1172.  
  1173. `--listing-rhs-width=`number''
  1174.      Sets the maximum width, in characters, of the source line that is
  1175.      displayed alongside the hex dump.  The default value for this
  1176.      parameter is 100.  The source line is displayed on the right hand
  1177.      side of the listing output.
  1178.  
  1179. `--listing-cont-lines=`number''
  1180.      Sets the maximum number of continuation lines of hex dump that
  1181.      will be displayed for a given single line of source input.  The
  1182.      default value is 4.
  1183.  
  1184. 
  1185. File: as.info,  Node: M,  Next: MD,  Prev: listing,  Up: Invoking
  1186.  
  1187. 2.9 Assemble in MRI Compatibility Mode: `-M'
  1188. ============================================
  1189.  
  1190. The `-M' or `--mri' option selects MRI compatibility mode.  This
  1191. changes the syntax and pseudo-op handling of `as' to make it compatible
  1192. with the `ASM68K' or the `ASM960' (depending upon the configured
  1193. target) assembler from Microtec Research.  The exact nature of the MRI
  1194. syntax will not be documented here; see the MRI manuals for more
  1195. information.  Note in particular that the handling of macros and macro
  1196. arguments is somewhat different.  The purpose of this option is to
  1197. permit assembling existing MRI assembler code using `as'.
  1198.  
  1199.    The MRI compatibility is not complete.  Certain operations of the
  1200. MRI assembler depend upon its object file format, and can not be
  1201. supported using other object file formats.  Supporting these would
  1202. require enhancing each object file format individually.  These are:
  1203.  
  1204.    * global symbols in common section
  1205.  
  1206.      The m68k MRI assembler supports common sections which are merged
  1207.      by the linker.  Other object file formats do not support this.
  1208.      `as' handles common sections by treating them as a single common
  1209.      symbol.  It permits local symbols to be defined within a common
  1210.      section, but it can not support global symbols, since it has no
  1211.      way to describe them.
  1212.  
  1213.    * complex relocations
  1214.  
  1215.      The MRI assemblers support relocations against a negated section
  1216.      address, and relocations which combine the start addresses of two
  1217.      or more sections.  These are not support by other object file
  1218.      formats.
  1219.  
  1220.    * `END' pseudo-op specifying start address
  1221.  
  1222.      The MRI `END' pseudo-op permits the specification of a start
  1223.      address.  This is not supported by other object file formats.  The
  1224.      start address may instead be specified using the `-e' option to
  1225.      the linker, or in a linker script.
  1226.  
  1227.    * `IDNT', `.ident' and `NAME' pseudo-ops
  1228.  
  1229.      The MRI `IDNT', `.ident' and `NAME' pseudo-ops assign a module
  1230.      name to the output file.  This is not supported by other object
  1231.      file formats.
  1232.  
  1233.    * `ORG' pseudo-op
  1234.  
  1235.      The m68k MRI `ORG' pseudo-op begins an absolute section at a given
  1236.      address.  This differs from the usual `as' `.org' pseudo-op, which
  1237.      changes the location within the current section.  Absolute
  1238.      sections are not supported by other object file formats.  The
  1239.      address of a section may be assigned within a linker script.
  1240.  
  1241.    There are some other features of the MRI assembler which are not
  1242. supported by `as', typically either because they are difficult or
  1243. because they seem of little consequence.  Some of these may be
  1244. supported in future releases.
  1245.  
  1246.    * EBCDIC strings
  1247.  
  1248.      EBCDIC strings are not supported.
  1249.  
  1250.    * packed binary coded decimal
  1251.  
  1252.      Packed binary coded decimal is not supported.  This means that the
  1253.      `DC.P' and `DCB.P' pseudo-ops are not supported.
  1254.  
  1255.    * `FEQU' pseudo-op
  1256.  
  1257.      The m68k `FEQU' pseudo-op is not supported.
  1258.  
  1259.    * `NOOBJ' pseudo-op
  1260.  
  1261.      The m68k `NOOBJ' pseudo-op is not supported.
  1262.  
  1263.    * `OPT' branch control options
  1264.  
  1265.      The m68k `OPT' branch control options--`B', `BRS', `BRB', `BRL',
  1266.      and `BRW'--are ignored.  `as' automatically relaxes all branches,
  1267.      whether forward or backward, to an appropriate size, so these
  1268.      options serve no purpose.
  1269.  
  1270.    * `OPT' list control options
  1271.  
  1272.      The following m68k `OPT' list control options are ignored: `C',
  1273.      `CEX', `CL', `CRE', `E', `G', `I', `M', `MEX', `MC', `MD', `X'.
  1274.  
  1275.    * other `OPT' options
  1276.  
  1277.      The following m68k `OPT' options are ignored: `NEST', `O', `OLD',
  1278.      `OP', `P', `PCO', `PCR', `PCS', `R'.
  1279.  
  1280.    * `OPT' `D' option is default
  1281.  
  1282.      The m68k `OPT' `D' option is the default, unlike the MRI assembler.
  1283.      `OPT NOD' may be used to turn it off.
  1284.  
  1285.    * `XREF' pseudo-op.
  1286.  
  1287.      The m68k `XREF' pseudo-op is ignored.
  1288.  
  1289.    * `.debug' pseudo-op
  1290.  
  1291.      The i960 `.debug' pseudo-op is not supported.
  1292.  
  1293.    * `.extended' pseudo-op
  1294.  
  1295.      The i960 `.extended' pseudo-op is not supported.
  1296.  
  1297.    * `.list' pseudo-op.
  1298.  
  1299.      The various options of the i960 `.list' pseudo-op are not
  1300.      supported.
  1301.  
  1302.    * `.optimize' pseudo-op
  1303.  
  1304.      The i960 `.optimize' pseudo-op is not supported.
  1305.  
  1306.    * `.output' pseudo-op
  1307.  
  1308.      The i960 `.output' pseudo-op is not supported.
  1309.  
  1310.    * `.setreal' pseudo-op
  1311.  
  1312.      The i960 `.setreal' pseudo-op is not supported.
  1313.  
  1314.  
  1315. 
  1316. File: as.info,  Node: MD,  Next: o,  Prev: M,  Up: Invoking
  1317.  
  1318. 2.10 Dependency Tracking: `--MD'
  1319. ================================
  1320.  
  1321. `as' can generate a dependency file for the file it creates.  This file
  1322. consists of a single rule suitable for `make' describing the
  1323. dependencies of the main source file.
  1324.  
  1325.    The rule is written to the file named in its argument.
  1326.  
  1327.    This feature is used in the automatic updating of makefiles.
  1328.  
  1329. 
  1330. File: as.info,  Node: o,  Next: R,  Prev: MD,  Up: Invoking
  1331.  
  1332. 2.11 Name the Object File: `-o'
  1333. ===============================
  1334.  
  1335. There is always one object file output when you run `as'.  By default
  1336. it has the name `a.out' (or `b.out', for Intel 960 targets only).  You
  1337. use this option (which takes exactly one filename) to give the object
  1338. file a different name.
  1339.  
  1340.    Whatever the object file is called, `as' overwrites any existing
  1341. file of the same name.
  1342.  
  1343. 
  1344. File: as.info,  Node: R,  Next: statistics,  Prev: o,  Up: Invoking
  1345.  
  1346. 2.12 Join Data and Text Sections: `-R'
  1347. ======================================
  1348.  
  1349. `-R' tells `as' to write the object file as if all data-section data
  1350. lives in the text section.  This is only done at the very last moment:
  1351. your binary data are the same, but data section parts are relocated
  1352. differently.  The data section part of your object file is zero bytes
  1353. long because all its bytes are appended to the text section.  (*Note
  1354. Sections and Relocation: Sections.)
  1355.  
  1356.    When you specify `-R' it would be possible to generate shorter
  1357. address displacements (because we do not have to cross between text and
  1358. data section).  We refrain from doing this simply for compatibility with
  1359. older versions of `as'.  In future, `-R' may work this way.
  1360.  
  1361.    When `as' is configured for COFF or ELF output, this option is only
  1362. useful if you use sections named `.text' and `.data'.
  1363.  
  1364.    `-R' is not supported for any of the HPPA targets.  Using `-R'
  1365. generates a warning from `as'.
  1366.  
  1367. 
  1368. File: as.info,  Node: statistics,  Next: traditional-format,  Prev: R,  Up: Invoking
  1369.  
  1370. 2.13 Display Assembly Statistics: `--statistics'
  1371. ================================================
  1372.  
  1373. Use `--statistics' to display two statistics about the resources used by
  1374. `as': the maximum amount of space allocated during the assembly (in
  1375. bytes), and the total execution time taken for the assembly (in CPU
  1376. seconds).
  1377.  
  1378. 
  1379. File: as.info,  Node: traditional-format,  Next: v,  Prev: statistics,  Up: Invoking
  1380.  
  1381. 2.14 Compatible Output: `--traditional-format'
  1382. ==============================================
  1383.  
  1384. For some targets, the output of `as' is different in some ways from the
  1385. output of some existing assembler.  This switch requests `as' to use
  1386. the traditional format instead.
  1387.  
  1388.    For example, it disables the exception frame optimizations which
  1389. `as' normally does by default on `gcc' output.
  1390.  
  1391. 
  1392. File: as.info,  Node: v,  Next: W,  Prev: traditional-format,  Up: Invoking
  1393.  
  1394. 2.15 Announce Version: `-v'
  1395. ===========================
  1396.  
  1397. You can find out what version of as is running by including the option
  1398. `-v' (which you can also spell as `-version') on the command line.
  1399.  
  1400. 
  1401. File: as.info,  Node: W,  Next: Z,  Prev: v,  Up: Invoking
  1402.  
  1403. 2.16 Control Warnings: `-W', `--warn', `--no-warn', `--fatal-warnings'
  1404. ======================================================================
  1405.  
  1406. `as' should never give a warning or error message when assembling
  1407. compiler output.  But programs written by people often cause `as' to
  1408. give a warning that a particular assumption was made.  All such
  1409. warnings are directed to the standard error file.
  1410.  
  1411.    If you use the `-W' and `--no-warn' options, no warnings are issued.
  1412. This only affects the warning messages: it does not change any
  1413. particular of how `as' assembles your file.  Errors, which stop the
  1414. assembly, are still reported.
  1415.  
  1416.    If you use the `--fatal-warnings' option, `as' considers files that
  1417. generate warnings to be in error.
  1418.  
  1419.    You can switch these options off again by specifying `--warn', which
  1420. causes warnings to be output as usual.
  1421.  
  1422. 
  1423. File: as.info,  Node: Z,  Prev: W,  Up: Invoking
  1424.  
  1425. 2.17 Generate Object File in Spite of Errors: `-Z'
  1426. ==================================================
  1427.  
  1428. After an error message, `as' normally produces no output.  If for some
  1429. reason you are interested in object file output even after `as' gives
  1430. an error message on your program, use the `-Z' option.  If there are
  1431. any errors, `as' continues anyways, and writes an object file after a
  1432. final warning message of the form `N errors, M warnings, generating bad
  1433. object file.'
  1434.  
  1435. 
  1436. File: as.info,  Node: Syntax,  Next: Sections,  Prev: Invoking,  Up: Top
  1437.  
  1438. 3 Syntax
  1439. ********
  1440.  
  1441. This chapter describes the machine-independent syntax allowed in a
  1442. source file.  `as' syntax is similar to what many other assemblers use;
  1443. it is inspired by the BSD 4.2 assembler, except that `as' does not
  1444. assemble Vax bit-fields.
  1445.  
  1446. * Menu:
  1447.  
  1448. * Preprocessing::              Preprocessing
  1449. * Whitespace::                  Whitespace
  1450. * Comments::                    Comments
  1451. * Symbol Intro::                Symbols
  1452. * Statements::                  Statements
  1453. * Constants::                   Constants
  1454.  
  1455. 
  1456. File: as.info,  Node: Preprocessing,  Next: Whitespace,  Up: Syntax
  1457.  
  1458. 3.1 Preprocessing
  1459. =================
  1460.  
  1461. The `as' internal preprocessor:
  1462.    * adjusts and removes extra whitespace.  It leaves one space or tab
  1463.      before the keywords on a line, and turns any other whitespace on
  1464.      the line into a single space.
  1465.  
  1466.    * removes all comments, replacing them with a single space, or an
  1467.      appropriate number of newlines.
  1468.  
  1469.    * converts character constants into the appropriate numeric values.
  1470.  
  1471.    It does not do macro processing, include file handling, or anything
  1472. else you may get from your C compiler's preprocessor.  You can do
  1473. include file processing with the `.include' directive (*note
  1474. `.include': Include.).  You can use the GNU C compiler driver to get
  1475. other "CPP" style preprocessing by giving the input file a `.S' suffix.
  1476. *Note Options Controlling the Kind of Output: (gcc.info)Overall
  1477. Options.
  1478.  
  1479.    Excess whitespace, comments, and character constants cannot be used
  1480. in the portions of the input text that are not preprocessed.
  1481.  
  1482.    If the first line of an input file is `#NO_APP' or if you use the
  1483. `-f' option, whitespace and comments are not removed from the input
  1484. file.  Within an input file, you can ask for whitespace and comment
  1485. removal in specific portions of the by putting a line that says `#APP'
  1486. before the text that may contain whitespace or comments, and putting a
  1487. line that says `#NO_APP' after this text.  This feature is mainly
  1488. intend to support `asm' statements in compilers whose output is
  1489. otherwise free of comments and whitespace.
  1490.  
  1491. 
  1492. File: as.info,  Node: Whitespace,  Next: Comments,  Prev: Preprocessing,  Up: Syntax
  1493.  
  1494. 3.2 Whitespace
  1495. ==============
  1496.  
  1497. "Whitespace" is one or more blanks or tabs, in any order.  Whitespace
  1498. is used to separate symbols, and to make programs neater for people to
  1499. read.  Unless within character constants (*note Character Constants:
  1500. Characters.), any whitespace means the same as exactly one space.
  1501.  
  1502. 
  1503. File: as.info,  Node: Comments,  Next: Symbol Intro,  Prev: Whitespace,  Up: Syntax
  1504.  
  1505. 3.3 Comments
  1506. ============
  1507.  
  1508. There are two ways of rendering comments to `as'.  In both cases the
  1509. comment is equivalent to one space.
  1510.  
  1511.    Anything from `/*' through the next `*/' is a comment.  This means
  1512. you may not nest these comments.
  1513.  
  1514.      /*
  1515.        The only way to include a newline ('\n') in a comment
  1516.        is to use this sort of comment.
  1517.      */
  1518.  
  1519.      /* This sort of comment does not nest. */
  1520.  
  1521.    Anything from the "line comment" character to the next newline is
  1522. considered a comment and is ignored.  The line comment character is `;'
  1523. for the AMD 29K family; `;' on the ARC; `@' on the ARM; `;' for the
  1524. H8/300 family; `!' for the H8/500 family; `;' for the HPPA; `#' on the
  1525. i386 and x86-64; `#' on the i960; `;' for the PDP-11; `;' for picoJava;
  1526. `#' for Motorola PowerPC; `!' for the Renesas / SuperH SH; `!' on the
  1527. SPARC; `#' on the ip2k; `#' on the m32r; `|' on the 680x0; `#' on the
  1528. 68HC11 and 68HC12; `;' on the M880x0; `#' on the Vax; `!' for the Z8000;
  1529. `#' on the V850; `#' for Xtensa systems; see *Note Machine
  1530. Dependencies::.
  1531.  
  1532.    On some machines there are two different line comment characters.
  1533. One character only begins a comment if it is the first non-whitespace
  1534. character on a line, while the other always begins a comment.
  1535.  
  1536.    The V850 assembler also supports a double dash as starting a comment
  1537. that extends to the end of the line.
  1538.  
  1539.    `--';
  1540.  
  1541.    To be compatible with past assemblers, lines that begin with `#'
  1542. have a special interpretation.  Following the `#' should be an absolute
  1543. expression (*note Expressions::): the logical line number of the _next_
  1544. line.  Then a string (*note Strings: Strings.) is allowed: if present
  1545. it is a new logical file name.  The rest of the line, if any, should be
  1546. whitespace.
  1547.  
  1548.    If the first non-whitespace characters on the line are not numeric,
  1549. the line is ignored.  (Just like a comment.)
  1550.  
  1551.                                # This is an ordinary comment.
  1552.      # 42-6 "new_file_name"    # New logical file name
  1553.                                # This is logical line # 36.
  1554.    This feature is deprecated, and may disappear from future versions
  1555. of `as'.
  1556.  
  1557. 
  1558. File: as.info,  Node: Symbol Intro,  Next: Statements,  Prev: Comments,  Up: Syntax
  1559.  
  1560. 3.4 Symbols
  1561. ===========
  1562.  
  1563. A "symbol" is one or more characters chosen from the set of all letters
  1564. (both upper and lower case), digits and the three characters `_.$'.  On
  1565. most machines, you can also use `$' in symbol names; exceptions are
  1566. noted in *Note Machine Dependencies::.  No symbol may begin with a
  1567. digit.  Case is significant.  There is no length limit: all characters
  1568. are significant.  Symbols are delimited by characters not in that set,
  1569. or by the beginning of a file (since the source program must end with a
  1570. newline, the end of a file is not a possible symbol delimiter).  *Note
  1571. Symbols::.  
  1572.  
  1573. 
  1574. File: as.info,  Node: Statements,  Next: Constants,  Prev: Symbol Intro,  Up: Syntax
  1575.  
  1576. 3.5 Statements
  1577. ==============
  1578.  
  1579. A "statement" ends at a newline character (`\n') or line separator
  1580. character.  (The line separator is usually `;', unless this conflicts
  1581. with the comment character; *note Machine Dependencies::.)  The newline
  1582. or separator character is considered part of the preceding statement.
  1583. Newlines and separators within character constants are an exception:
  1584. they do not end statements.
  1585.  
  1586. It is an error to end any statement with end-of-file:  the last
  1587. character of any input file should be a newline.
  1588.  
  1589.    An empty statement is allowed, and may include whitespace.  It is
  1590. ignored.
  1591.  
  1592.    A statement begins with zero or more labels, optionally followed by a
  1593. key symbol which determines what kind of statement it is.  The key
  1594. symbol determines the syntax of the rest of the statement.  If the
  1595. symbol begins with a dot `.' then the statement is an assembler
  1596. directive: typically valid for any computer.  If the symbol begins with
  1597. a letter the statement is an assembly language "instruction": it
  1598. assembles into a machine language instruction.  Different versions of
  1599. `as' for different computers recognize different instructions.  In
  1600. fact, the same symbol may represent a different instruction in a
  1601. different computer's assembly language.
  1602.  
  1603.    A label is a symbol immediately followed by a colon (`:').
  1604. Whitespace before a label or after a colon is permitted, but you may not
  1605. have whitespace between a label's symbol and its colon. *Note Labels::.
  1606.  
  1607.    For HPPA targets, labels need not be immediately followed by a
  1608. colon, but the definition of a label must begin in column zero.  This
  1609. also implies that only one label may be defined on each line.
  1610.  
  1611.      label:     .directive    followed by something
  1612.      another_label:           # This is an empty statement.
  1613.                 instruction   operand_1, operand_2, ...
  1614.  
  1615. 
  1616. File: as.info,  Node: Constants,  Prev: Statements,  Up: Syntax
  1617.  
  1618. 3.6 Constants
  1619. =============
  1620.  
  1621. A constant is a number, written so that its value is known by
  1622. inspection, without knowing any context.  Like this:
  1623.      .byte  74, 0112, 092, 0x4A, 0X4a, 'J, '\J # All the same value.
  1624.      .ascii "Ring the bell\7"                  # A string constant.
  1625.      .octa  0x123456789abcdef0123456789ABCDEF0 # A bignum.
  1626.      .float 0f-314159265358979323846264338327\
  1627.      95028841971.693993751E-40                 # - pi, a flonum.
  1628.  
  1629. * Menu:
  1630.  
  1631. * Characters::                  Character Constants
  1632. * Numbers::                     Number Constants
  1633.  
  1634. 
  1635. File: as.info,  Node: Characters,  Next: Numbers,  Up: Constants
  1636.  
  1637. 3.6.1 Character Constants
  1638. -------------------------
  1639.  
  1640. There are two kinds of character constants.  A "character" stands for
  1641. one character in one byte and its value may be used in numeric
  1642. expressions.  String constants (properly called string _literals_) are
  1643. potentially many bytes and their values may not be used in arithmetic
  1644. expressions.
  1645.  
  1646. * Menu:
  1647.  
  1648. * Strings::                     Strings
  1649. * Chars::                       Characters
  1650.  
  1651. 
  1652. File: as.info,  Node: Strings,  Next: Chars,  Up: Characters
  1653.  
  1654. 3.6.1.1 Strings
  1655. ...............
  1656.  
  1657. A "string" is written between double-quotes.  It may contain
  1658. double-quotes or null characters.  The way to get special characters
  1659. into a string is to "escape" these characters: precede them with a
  1660. backslash `\' character.  For example `\\' represents one backslash:
  1661. the first `\' is an escape which tells `as' to interpret the second
  1662. character literally as a backslash (which prevents `as' from
  1663. recognizing the second `\' as an escape character).  The complete list
  1664. of escapes follows.
  1665.  
  1666. `\b'
  1667.      Mnemonic for backspace; for ASCII this is octal code 010.
  1668.  
  1669. `\f'
  1670.      Mnemonic for FormFeed; for ASCII this is octal code 014.
  1671.  
  1672. `\n'
  1673.      Mnemonic for newline; for ASCII this is octal code 012.
  1674.  
  1675. `\r'
  1676.      Mnemonic for carriage-Return; for ASCII this is octal code 015.
  1677.  
  1678. `\t'
  1679.      Mnemonic for horizontal Tab; for ASCII this is octal code 011.
  1680.  
  1681. `\ DIGIT DIGIT DIGIT'
  1682.      An octal character code.  The numeric code is 3 octal digits.  For
  1683.      compatibility with other Unix systems, 8 and 9 are accepted as
  1684.      digits: for example, `\008' has the value 010, and `\009' the
  1685.      value 011.
  1686.  
  1687. `\`x' HEX-DIGITS...'
  1688.      A hex character code.  All trailing hex digits are combined.
  1689.      Either upper or lower case `x' works.
  1690.  
  1691. `\\'
  1692.      Represents one `\' character.
  1693.  
  1694. `\"'
  1695.      Represents one `"' character.  Needed in strings to represent this
  1696.      character, because an unescaped `"' would end the string.
  1697.  
  1698. `\ ANYTHING-ELSE'
  1699.      Any other character when escaped by `\' gives a warning, but
  1700.      assembles as if the `\' was not present.  The idea is that if you
  1701.      used an escape sequence you clearly didn't want the literal
  1702.      interpretation of the following character.  However `as' has no
  1703.      other interpretation, so `as' knows it is giving you the wrong
  1704.      code and warns you of the fact.
  1705.  
  1706.    Which characters are escapable, and what those escapes represent,
  1707. varies widely among assemblers.  The current set is what we think the
  1708. BSD 4.2 assembler recognizes, and is a subset of what most C compilers
  1709. recognize.  If you are in doubt, do not use an escape sequence.
  1710.  
  1711. 
  1712. File: as.info,  Node: Chars,  Prev: Strings,  Up: Characters
  1713.  
  1714. 3.6.1.2 Characters
  1715. ..................
  1716.  
  1717. A single character may be written as a single quote immediately
  1718. followed by that character.  The same escapes apply to characters as to
  1719. strings.  So if you want to write the character backslash, you must
  1720. write `'\\' where the first `\' escapes the second `\'.  As you can
  1721. see, the quote is an acute accent, not a grave accent.  A newline
  1722. immediately following an acute accent is taken as a literal character
  1723. and does not count as the end of a statement.  The value of a character
  1724. constant in a numeric expression is the machine's byte-wide code for
  1725. that character.  `as' assumes your character code is ASCII: `'A' means
  1726. 65, `'B' means 66, and so on.
  1727.  
  1728. 
  1729. File: as.info,  Node: Numbers,  Prev: Characters,  Up: Constants
  1730.  
  1731. 3.6.2 Number Constants
  1732. ----------------------
  1733.  
  1734. `as' distinguishes three kinds of numbers according to how they are
  1735. stored in the target machine.  _Integers_ are numbers that would fit
  1736. into an `int' in the C language.  _Bignums_ are integers, but they are
  1737. stored in more than 32 bits.  _Flonums_ are floating point numbers,
  1738. described below.
  1739.  
  1740. * Menu:
  1741.  
  1742. * Integers::                    Integers
  1743. * Bignums::                     Bignums
  1744. * Flonums::                     Flonums
  1745.  
  1746. 
  1747. File: as.info,  Node: Integers,  Next: Bignums,  Up: Numbers
  1748.  
  1749. 3.6.2.1 Integers
  1750. ................
  1751.  
  1752. A binary integer is `0b' or `0B' followed by zero or more of the binary
  1753. digits `01'.
  1754.  
  1755.    An octal integer is `0' followed by zero or more of the octal digits
  1756. (`01234567').
  1757.  
  1758.    A decimal integer starts with a non-zero digit followed by zero or
  1759. more digits (`0123456789').
  1760.  
  1761.    A hexadecimal integer is `0x' or `0X' followed by one or more
  1762. hexadecimal digits chosen from `0123456789abcdefABCDEF'.
  1763.  
  1764.    Integers have the usual values.  To denote a negative integer, use
  1765. the prefix operator `-' discussed under expressions (*note Prefix
  1766. Operators: Prefix Ops.).
  1767.  
  1768. 
  1769. File: as.info,  Node: Bignums,  Next: Flonums,  Prev: Integers,  Up: Numbers
  1770.  
  1771. 3.6.2.2 Bignums
  1772. ...............
  1773.  
  1774. A "bignum" has the same syntax and semantics as an integer except that
  1775. the number (or its negative) takes more than 32 bits to represent in
  1776. binary.  The distinction is made because in some places integers are
  1777. permitted while bignums are not.
  1778.  
  1779. 
  1780. File: as.info,  Node: Flonums,  Prev: Bignums,  Up: Numbers
  1781.  
  1782. 3.6.2.3 Flonums
  1783. ...............
  1784.  
  1785. A "flonum" represents a floating point number.  The translation is
  1786. indirect: a decimal floating point number from the text is converted by
  1787. `as' to a generic binary floating point number of more than sufficient
  1788. precision.  This generic floating point number is converted to a
  1789. particular computer's floating point format (or formats) by a portion
  1790. of `as' specialized to that computer.
  1791.  
  1792.    A flonum is written by writing (in order)
  1793.    * The digit `0'.  (`0' is optional on the HPPA.)
  1794.  
  1795.    * A letter, to tell `as' the rest of the number is a flonum.  `e' is
  1796.      recommended.  Case is not important.
  1797.  
  1798.      On the H8/300, H8/500, Renesas / SuperH SH, and AMD 29K
  1799.      architectures, the letter must be one of the letters `DFPRSX' (in
  1800.      upper or lower case).
  1801.  
  1802.      On the ARC, the letter must be one of the letters `DFRS' (in upper
  1803.      or lower case).
  1804.  
  1805.      On the Intel 960 architecture, the letter must be one of the
  1806.      letters `DFT' (in upper or lower case).
  1807.  
  1808.      On the HPPA architecture, the letter must be `E' (upper case only).
  1809.  
  1810.    * An optional sign: either `+' or `-'.
  1811.  
  1812.    * An optional "integer part": zero or more decimal digits.
  1813.  
  1814.    * An optional "fractional part": `.' followed by zero or more
  1815.      decimal digits.
  1816.  
  1817.    * An optional exponent, consisting of:
  1818.  
  1819.         * An `E' or `e'.
  1820.  
  1821.         * Optional sign: either `+' or `-'.
  1822.  
  1823.         * One or more decimal digits.
  1824.  
  1825.  
  1826.    At least one of the integer part or the fractional part must be
  1827. present.  The floating point number has the usual base-10 value.
  1828.  
  1829.    `as' does all processing using integers.  Flonums are computed
  1830. independently of any floating point hardware in the computer running
  1831. `as'.
  1832.  
  1833. 
  1834. File: as.info,  Node: Sections,  Next: Symbols,  Prev: Syntax,  Up: Top
  1835.  
  1836. 4 Sections and Relocation
  1837. *************************
  1838.  
  1839. * Menu:
  1840.  
  1841. * Secs Background::             Background
  1842. * Ld Sections::                 Linker Sections
  1843. * As Sections::                 Assembler Internal Sections
  1844. * Sub-Sections::                Sub-Sections
  1845. * bss::                         bss Section
  1846.  
  1847. 
  1848. File: as.info,  Node: Secs Background,  Next: Ld Sections,  Up: Sections
  1849.  
  1850. 4.1 Background
  1851. ==============
  1852.  
  1853. Roughly, a section is a range of addresses, with no gaps; all data "in"
  1854. those addresses is treated the same for some particular purpose.  For
  1855. example there may be a "read only" section.
  1856.  
  1857.    The linker `ld' reads many object files (partial programs) and
  1858. combines their contents to form a runnable program.  When `as' emits an
  1859. object file, the partial program is assumed to start at address 0.
  1860. `ld' assigns the final addresses for the partial program, so that
  1861. different partial programs do not overlap.  This is actually an
  1862. oversimplification, but it suffices to explain how `as' uses sections.
  1863.  
  1864.    `ld' moves blocks of bytes of your program to their run-time
  1865. addresses.  These blocks slide to their run-time addresses as rigid
  1866. units; their length does not change and neither does the order of bytes
  1867. within them.  Such a rigid unit is called a _section_.  Assigning
  1868. run-time addresses to sections is called "relocation".  It includes the
  1869. task of adjusting mentions of object-file addresses so they refer to
  1870. the proper run-time addresses.  For the H8/300 and H8/500, and for the
  1871. Renesas / SuperH SH, `as' pads sections if needed to ensure they end on
  1872. a word (sixteen bit) boundary.
  1873.  
  1874.    An object file written by `as' has at least three sections, any of
  1875. which may be empty.  These are named "text", "data" and "bss" sections.
  1876.  
  1877.    When it generates COFF or ELF output, `as' can also generate
  1878. whatever other named sections you specify using the `.section'
  1879. directive (*note `.section': Section.).  If you do not use any
  1880. directives that place output in the `.text' or `.data' sections, these
  1881. sections still exist, but are empty.
  1882.  
  1883.    When `as' generates SOM or ELF output for the HPPA, `as' can also
  1884. generate whatever other named sections you specify using the `.space'
  1885. and `.subspace' directives.  See `HP9000 Series 800 Assembly Language
  1886. Reference Manual' (HP 92432-90001) for details on the `.space' and
  1887. `.subspace' assembler directives.
  1888.  
  1889.    Additionally, `as' uses different names for the standard text, data,
  1890. and bss sections when generating SOM output.  Program text is placed
  1891. into the `$CODE$' section, data into `$DATA$', and BSS into `$BSS$'.
  1892.  
  1893.    Within the object file, the text section starts at address `0', the
  1894. data section follows, and the bss section follows the data section.
  1895.  
  1896.    When generating either SOM or ELF output files on the HPPA, the text
  1897. section starts at address `0', the data section at address `0x4000000',
  1898. and the bss section follows the data section.
  1899.  
  1900.    To let `ld' know which data changes when the sections are relocated,
  1901. and how to change that data, `as' also writes to the object file
  1902. details of the relocation needed.  To perform relocation `ld' must
  1903. know, each time an address in the object file is mentioned:
  1904.    * Where in the object file is the beginning of this reference to an
  1905.      address?
  1906.  
  1907.    * How long (in bytes) is this reference?
  1908.  
  1909.    * Which section does the address refer to?  What is the numeric
  1910.      value of
  1911.           (ADDRESS) - (START-ADDRESS OF SECTION)?
  1912.  
  1913.    * Is the reference to an address "Program-Counter relative"?
  1914.  
  1915.    In fact, every address `as' ever uses is expressed as
  1916.      (SECTION) + (OFFSET INTO SECTION)
  1917.    Further, most expressions `as' computes have this section-relative
  1918. nature.  (For some object formats, such as SOM for the HPPA, some
  1919. expressions are symbol-relative instead.)
  1920.  
  1921.    In this manual we use the notation {SECNAME N} to mean "offset N
  1922. into section SECNAME."
  1923.  
  1924.    Apart from text, data and bss sections you need to know about the
  1925. "absolute" section.  When `ld' mixes partial programs, addresses in the
  1926. absolute section remain unchanged.  For example, address `{absolute 0}'
  1927. is "relocated" to run-time address 0 by `ld'.  Although the linker
  1928. never arranges two partial programs' data sections with overlapping
  1929. addresses after linking, _by definition_ their absolute sections must
  1930. overlap.  Address `{absolute 239}' in one part of a program is always
  1931. the same address when the program is running as address `{absolute
  1932. 239}' in any other part of the program.
  1933.  
  1934.    The idea of sections is extended to the "undefined" section.  Any
  1935. address whose section is unknown at assembly time is by definition
  1936. rendered {undefined U}--where U is filled in later.  Since numbers are
  1937. always defined, the only way to generate an undefined address is to
  1938. mention an undefined symbol.  A reference to a named common block would
  1939. be such a symbol: its value is unknown at assembly time so it has
  1940. section _undefined_.
  1941.  
  1942.    By analogy the word _section_ is used to describe groups of sections
  1943. in the linked program.  `ld' puts all partial programs' text sections
  1944. in contiguous addresses in the linked program.  It is customary to
  1945. refer to the _text section_ of a program, meaning all the addresses of
  1946. all partial programs' text sections.  Likewise for data and bss
  1947. sections.
  1948.  
  1949.    Some sections are manipulated by `ld'; others are invented for use
  1950. of `as' and have no meaning except during assembly.
  1951.  
  1952. 
  1953. File: as.info,  Node: Ld Sections,  Next: As Sections,  Prev: Secs Background,  Up: Sections
  1954.  
  1955. 4.2 Linker Sections
  1956. ===================
  1957.  
  1958. `ld' deals with just four kinds of sections, summarized below.
  1959.  
  1960. *named sections*
  1961. *text section*
  1962. *data section*
  1963.      These sections hold your program.  `as' and `ld' treat them as
  1964.      separate but equal sections.  Anything you can say of one section
  1965.      is true of another.  When the program is running, however, it is
  1966.      customary for the text section to be unalterable.  The text
  1967.      section is often shared among processes: it contains instructions,
  1968.      constants and the like.  The data section of a running program is
  1969.      usually alterable: for example, C variables would be stored in the
  1970.      data section.
  1971.  
  1972. *bss section*
  1973.      This section contains zeroed bytes when your program begins
  1974.      running.  It is used to hold uninitialized variables or common
  1975.      storage.  The length of each partial program's bss section is
  1976.      important, but because it starts out containing zeroed bytes there
  1977.      is no need to store explicit zero bytes in the object file.  The
  1978.      bss section was invented to eliminate those explicit zeros from
  1979.      object files.
  1980.  
  1981. *absolute section*
  1982.      Address 0 of this section is always "relocated" to runtime address
  1983.      0.  This is useful if you want to refer to an address that `ld'
  1984.      must not change when relocating.  In this sense we speak of
  1985.      absolute addresses being "unrelocatable": they do not change
  1986.      during relocation.
  1987.  
  1988. *undefined section*
  1989.      This "section" is a catch-all for address references to objects
  1990.      not in the preceding sections.
  1991.  
  1992.    An idealized example of three relocatable sections follows.  The
  1993. example uses the traditional section names `.text' and `.data'.  Memory
  1994. addresses are on the horizontal axis.
  1995.  
  1996.                            +-----+----+--+
  1997.      partial program # 1:  |ttttt|dddd|00|
  1998.                            +-----+----+--+
  1999.  
  2000.                            text   data bss
  2001.                            seg.   seg. seg.
  2002.  
  2003.                            +---+---+---+
  2004.      partial program # 2:  |TTT|DDD|000|
  2005.                            +---+---+---+
  2006.  
  2007.                            +--+---+-----+--+----+---+-----+~~
  2008.      linked program:       |  |TTT|ttttt|  |dddd|DDD|00000|
  2009.                            +--+---+-----+--+----+---+-----+~~
  2010.  
  2011.          addresses:        0 ...
  2012.  
  2013. 
  2014. File: as.info,  Node: As Sections,  Next: Sub-Sections,  Prev: Ld Sections,  Up: Sections
  2015.  
  2016. 4.3 Assembler Internal Sections
  2017. ===============================
  2018.  
  2019. These sections are meant only for the internal use of `as'.  They have
  2020. no meaning at run-time.  You do not really need to know about these
  2021. sections for most purposes; but they can be mentioned in `as' warning
  2022. messages, so it might be helpful to have an idea of their meanings to
  2023. `as'.  These sections are used to permit the value of every expression
  2024. in your assembly language program to be a section-relative address.
  2025.  
  2026. ASSEMBLER-INTERNAL-LOGIC-ERROR!
  2027.      An internal assembler logic error has been found.  This means
  2028.      there is a bug in the assembler.
  2029.  
  2030. expr section
  2031.      The assembler stores complex expression internally as combinations
  2032.      of symbols.  When it needs to represent an expression as a symbol,
  2033.      it puts it in the expr section.
  2034.  
  2035. 
  2036. File: as.info,  Node: Sub-Sections,  Next: bss,  Prev: As Sections,  Up: Sections
  2037.  
  2038. 4.4 Sub-Sections
  2039. ================
  2040.  
  2041. Assembled bytes conventionally fall into two sections: text and data.
  2042. You may have separate groups of data in named sections that you want to
  2043. end up near to each other in the object file, even though they are not
  2044. contiguous in the assembler source.  `as' allows you to use
  2045. "subsections" for this purpose.  Within each section, there can be
  2046. numbered subsections with values from 0 to 8192.  Objects assembled
  2047. into the same subsection go into the object file together with other
  2048. objects in the same subsection.  For example, a compiler might want to
  2049. store constants in the text section, but might not want to have them
  2050. interspersed with the program being assembled.  In this case, the
  2051. compiler could issue a `.text 0' before each section of code being
  2052. output, and a `.text 1' before each group of constants being output.
  2053.  
  2054. Subsections are optional.  If you do not use subsections, everything
  2055. goes in subsection number zero.
  2056.  
  2057.    Each subsection is zero-padded up to a multiple of four bytes.
  2058. (Subsections may be padded a different amount on different flavors of
  2059. `as'.)
  2060.  
  2061.    Subsections appear in your object file in numeric order, lowest
  2062. numbered to highest.  (All this to be compatible with other people's
  2063. assemblers.)  The object file contains no representation of
  2064. subsections; `ld' and other programs that manipulate object files see
  2065. no trace of them.  They just see all your text subsections as a text
  2066. section, and all your data subsections as a data section.
  2067.  
  2068.    To specify which subsection you want subsequent statements assembled
  2069. into, use a numeric argument to specify it, in a `.text EXPRESSION' or
  2070. a `.data EXPRESSION' statement.  When generating COFF output, you can
  2071. also use an extra subsection argument with arbitrary named sections:
  2072. `.section NAME, EXPRESSION'.  When generating ELF output, you can also
  2073. use the `.subsection' directive (*note SubSection::) to specify a
  2074. subsection: `.subsection EXPRESSION'.  EXPRESSION should be an absolute
  2075. expression.  (*Note Expressions::.)  If you just say `.text' then
  2076. `.text 0' is assumed.  Likewise `.data' means `.data 0'.  Assembly
  2077. begins in `text 0'.  For instance:
  2078.      .text 0     # The default subsection is text 0 anyway.
  2079.      .ascii "This lives in the first text subsection. *"
  2080.      .text 1
  2081.      .ascii "But this lives in the second text subsection."
  2082.      .data 0
  2083.      .ascii "This lives in the data section,"
  2084.      .ascii "in the first data subsection."
  2085.      .text 0
  2086.      .ascii "This lives in the first text section,"
  2087.      .ascii "immediately following the asterisk (*)."
  2088.  
  2089.    Each section has a "location counter" incremented by one for every
  2090. byte assembled into that section.  Because subsections are merely a
  2091. convenience restricted to `as' there is no concept of a subsection
  2092. location counter.  There is no way to directly manipulate a location
  2093. counter--but the `.align' directive changes it, and any label
  2094. definition captures its current value.  The location counter of the
  2095. section where statements are being assembled is said to be the "active"
  2096. location counter.
  2097.  
  2098. 
  2099. File: as.info,  Node: bss,  Prev: Sub-Sections,  Up: Sections
  2100.  
  2101. 4.5 bss Section
  2102. ===============
  2103.  
  2104. The bss section is used for local common variable storage.  You may
  2105. allocate address space in the bss section, but you may not dictate data
  2106. to load into it before your program executes.  When your program starts
  2107. running, all the contents of the bss section are zeroed bytes.
  2108.  
  2109.    The `.lcomm' pseudo-op defines a symbol in the bss section; see
  2110. *Note `.lcomm': Lcomm.
  2111.  
  2112.    The `.comm' pseudo-op may be used to declare a common symbol, which
  2113. is another form of uninitialized symbol; see *Note `.comm': Comm.
  2114.  
  2115.    When assembling for a target which supports multiple sections, such
  2116. as ELF or COFF, you may switch into the `.bss' section and define
  2117. symbols as usual; see *Note `.section': Section.  You may only assemble
  2118. zero values into the section.  Typically the section will only contain
  2119. symbol definitions and `.skip' directives (*note `.skip': Skip.).
  2120.  
  2121. 
  2122. File: as.info,  Node: Symbols,  Next: Expressions,  Prev: Sections,  Up: Top
  2123.  
  2124. 5 Symbols
  2125. *********
  2126.  
  2127. Symbols are a central concept: the programmer uses symbols to name
  2128. things, the linker uses symbols to link, and the debugger uses symbols
  2129. to debug.
  2130.  
  2131.      _Warning:_ `as' does not place symbols in the object file in the
  2132.      same order they were declared.  This may break some debuggers.
  2133.  
  2134. * Menu:
  2135.  
  2136. * Labels::                      Labels
  2137. * Setting Symbols::             Giving Symbols Other Values
  2138. * Symbol Names::                Symbol Names
  2139. * Dot::                         The Special Dot Symbol
  2140. * Symbol Attributes::           Symbol Attributes
  2141.  
  2142. 
  2143. File: as.info,  Node: Labels,  Next: Setting Symbols,  Up: Symbols
  2144.  
  2145. 5.1 Labels
  2146. ==========
  2147.  
  2148. A "label" is written as a symbol immediately followed by a colon `:'.
  2149. The symbol then represents the current value of the active location
  2150. counter, and is, for example, a suitable instruction operand.  You are
  2151. warned if you use the same symbol to represent two different locations:
  2152. the first definition overrides any other definitions.
  2153.  
  2154.    On the HPPA, the usual form for a label need not be immediately
  2155. followed by a colon, but instead must start in column zero.  Only one
  2156. label may be defined on a single line.  To work around this, the HPPA
  2157. version of `as' also provides a special directive `.label' for defining
  2158. labels more flexibly.
  2159.  
  2160. 
  2161. File: as.info,  Node: Setting Symbols,  Next: Symbol Names,  Prev: Labels,  Up: Symbols
  2162.  
  2163. 5.2 Giving Symbols Other Values
  2164. ===============================
  2165.  
  2166. A symbol can be given an arbitrary value by writing a symbol, followed
  2167. by an equals sign `=', followed by an expression (*note Expressions::).
  2168. This is equivalent to using the `.set' directive.  *Note `.set': Set.
  2169.  
  2170. 
  2171. File: as.info,  Node: Symbol Names,  Next: Dot,  Prev: Setting Symbols,  Up: Symbols
  2172.  
  2173. 5.3 Symbol Names
  2174. ================
  2175.  
  2176. Symbol names begin with a letter or with one of `._'.  On most
  2177. machines, you can also use `$' in symbol names; exceptions are noted in
  2178. *Note Machine Dependencies::.  That character may be followed by any
  2179. string of digits, letters, dollar signs (unless otherwise noted in
  2180. *Note Machine Dependencies::), and underscores.  For the AMD 29K
  2181. family, `?' is also allowed in the body of a symbol name, though not at
  2182. its beginning.
  2183.  
  2184. Case of letters is significant: `foo' is a different symbol name than
  2185. `Foo'.
  2186.  
  2187.    Each symbol has exactly one name.  Each name in an assembly language
  2188. program refers to exactly one symbol.  You may use that symbol name any
  2189. number of times in a program.
  2190.  
  2191. Local Symbol Names
  2192. ------------------
  2193.  
  2194. Local symbols help compilers and programmers use names temporarily.
  2195. They create symbols which are guaranteed to be unique over the entire
  2196. scope of the input source code and which can be referred to by a simple
  2197. notation.  To define a local symbol, write a label of the form `N:'
  2198. (where N represents any positive integer).  To refer to the most recent
  2199. previous definition of that symbol write `Nb', using the same number as
  2200. when you defined the label.  To refer to the next definition of a local
  2201. label, write `Nf'-- The `b' stands for"backwards" and the `f' stands
  2202. for "forwards".
  2203.  
  2204.    There is no restriction on how you can use these labels, and you can
  2205. reuse them too.  So that it is possible to repeatedly define the same
  2206. local label (using the same number `N'), although you can only refer to
  2207. the most recently defined local label of that number (for a backwards
  2208. reference) or the next definition of a specific local label for a
  2209. forward reference.  It is also worth noting that the first 10 local
  2210. labels (`0:'...`9:') are implemented in a slightly more efficient
  2211. manner than the others.
  2212.  
  2213.    Here is an example:
  2214.  
  2215.      1:        branch 1f
  2216.      2:        branch 1b
  2217.      1:        branch 2f
  2218.      2:        branch 1b
  2219.  
  2220.    Which is the equivalent of:
  2221.  
  2222.      label_1:  branch label_3
  2223.      label_2:  branch label_1
  2224.      label_3:  branch label_4
  2225.      label_4:  branch label_3
  2226.  
  2227.    Local symbol names are only a notational device.  They are
  2228. immediately transformed into more conventional symbol names before the
  2229. assembler uses them.  The symbol names stored in the symbol table,
  2230. appearing in error messages and optionally emitted to the object file.
  2231. The names are constructed using these parts:
  2232.  
  2233. `L'
  2234.      All local labels begin with `L'. Normally both `as' and `ld'
  2235.      forget symbols that start with `L'. These labels are used for
  2236.      symbols you are never intended to see.  If you use the `-L' option
  2237.      then `as' retains these symbols in the object file. If you also
  2238.      instruct `ld' to retain these symbols, you may use them in
  2239.      debugging.
  2240.  
  2241. `NUMBER'
  2242.      This is the number that was used in the local label definition.
  2243.      So if the label is written `55:' then the number is `55'.
  2244.  
  2245. `C-B'
  2246.      This unusual character is included so you do not accidentally
  2247.      invent a symbol of the same name.  The character has ASCII value
  2248.      of `\002' (control-B).
  2249.  
  2250. `_ordinal number_'
  2251.      This is a serial number to keep the labels distinct.  The first
  2252.      definition of `0:' gets the number `1'.  The 15th definition of
  2253.      `0:' gets the number `15', and so on.  Likewise the first
  2254.      definition of `1:' gets the number `1' and its 15th defintion gets
  2255.      `15' as well.
  2256.  
  2257.    So for example, the first `1:' is named `L1C-B1', the 44th `3:' is
  2258. named `L3C-B44'.
  2259.  
  2260. Dollar Local Labels
  2261. -------------------
  2262.  
  2263. `as' also supports an even more local form of local labels called
  2264. dollar labels.  These labels go out of scope (ie they become undefined)
  2265. as soon as a non-local label is defined.  Thus they remain valid for
  2266. only a small region of the input source code.  Normal local labels, by
  2267. contrast, remain in scope for the entire file, or until they are
  2268. redefined by another occurrence of the same local label.
  2269.  
  2270.    Dollar labels are defined in exactly the same way as ordinary local
  2271. labels, except that instead of being terminated by a colon, they are
  2272. terminated by a dollar sign.  eg `55$'.
  2273.  
  2274.    They can also be distinguished from ordinary local labels by their
  2275. transformed name which uses ASCII character `\001' (control-A) as the
  2276. magic character to distinguish them from ordinary labels.  Thus the 5th
  2277. defintion of `6$' is named `L6C-A5'.
  2278.  
  2279. 
  2280. File: as.info,  Node: Dot,  Next: Symbol Attributes,  Prev: Symbol Names,  Up: Symbols
  2281.  
  2282. 5.4 The Special Dot Symbol
  2283. ==========================
  2284.  
  2285. The special symbol `.' refers to the current address that `as' is
  2286. assembling into.  Thus, the expression `melvin: .long .' defines
  2287. `melvin' to contain its own address.  Assigning a value to `.' is
  2288. treated the same as a `.org' directive.  Thus, the expression `.=.+4'
  2289. is the same as saying `.space 4'.
  2290.  
  2291. 
  2292. File: as.info,  Node: Symbol Attributes,  Prev: Dot,  Up: Symbols
  2293.  
  2294. 5.5 Symbol Attributes
  2295. =====================
  2296.  
  2297. Every symbol has, as well as its name, the attributes "Value" and
  2298. "Type".  Depending on output format, symbols can also have auxiliary
  2299. attributes.
  2300.  
  2301.    If you use a symbol without defining it, `as' assumes zero for all
  2302. these attributes, and probably won't warn you.  This makes the symbol
  2303. an externally defined symbol, which is generally what you would want.
  2304.  
  2305. * Menu:
  2306.  
  2307. * Symbol Value::                Value
  2308. * Symbol Type::                 Type
  2309.  
  2310.  
  2311. * a.out Symbols::               Symbol Attributes: `a.out'
  2312.  
  2313. * COFF Symbols::                Symbol Attributes for COFF
  2314.  
  2315. * SOM Symbols::                Symbol Attributes for SOM
  2316.  
  2317. 
  2318. File: as.info,  Node: Symbol Value,  Next: Symbol Type,  Up: Symbol Attributes
  2319.  
  2320. 5.5.1 Value
  2321. -----------
  2322.  
  2323. The value of a symbol is (usually) 32 bits.  For a symbol which labels a
  2324. location in the text, data, bss or absolute sections the value is the
  2325. number of addresses from the start of that section to the label.
  2326. Naturally for text, data and bss sections the value of a symbol changes
  2327. as `ld' changes section base addresses during linking.  Absolute
  2328. symbols' values do not change during linking: that is why they are
  2329. called absolute.
  2330.  
  2331.    The value of an undefined symbol is treated in a special way.  If it
  2332. is 0 then the symbol is not defined in this assembler source file, and
  2333. `ld' tries to determine its value from other files linked into the same
  2334. program.  You make this kind of symbol simply by mentioning a symbol
  2335. name without defining it.  A non-zero value represents a `.comm' common
  2336. declaration.  The value is how much common storage to reserve, in bytes
  2337. (addresses).  The symbol refers to the first address of the allocated
  2338. storage.
  2339.  
  2340. 
  2341. File: as.info,  Node: Symbol Type,  Next: a.out Symbols,  Prev: Symbol Value,  Up: Symbol Attributes
  2342.  
  2343. 5.5.2 Type
  2344. ----------
  2345.  
  2346. The type attribute of a symbol contains relocation (section)
  2347. information, any flag settings indicating that a symbol is external, and
  2348. (optionally), other information for linkers and debuggers.  The exact
  2349. format depends on the object-code output format in use.
  2350.  
  2351. 
  2352. File: as.info,  Node: a.out Symbols,  Next: COFF Symbols,  Prev: Symbol Type,  Up: Symbol Attributes
  2353.  
  2354. 5.5.3 Symbol Attributes: `a.out'
  2355. --------------------------------
  2356.  
  2357. * Menu:
  2358.  
  2359. * Symbol Desc::                 Descriptor
  2360. * Symbol Other::                Other
  2361.  
  2362. 
  2363. File: as.info,  Node: Symbol Desc,  Next: Symbol Other,  Up: a.out Symbols
  2364.  
  2365. 5.5.3.1 Descriptor
  2366. ..................
  2367.  
  2368. This is an arbitrary 16-bit value.  You may establish a symbol's
  2369. descriptor value by using a `.desc' statement (*note `.desc': Desc.).
  2370. A descriptor value means nothing to `as'.
  2371.  
  2372. 
  2373. File: as.info,  Node: Symbol Other,  Prev: Symbol Desc,  Up: a.out Symbols
  2374.  
  2375. 5.5.3.2 Other
  2376. .............
  2377.  
  2378. This is an arbitrary 8-bit value.  It means nothing to `as'.
  2379.  
  2380. 
  2381. File: as.info,  Node: COFF Symbols,  Next: SOM Symbols,  Prev: a.out Symbols,  Up: Symbol Attributes
  2382.  
  2383. 5.5.4 Symbol Attributes for COFF
  2384. --------------------------------
  2385.  
  2386. The COFF format supports a multitude of auxiliary symbol attributes;
  2387. like the primary symbol attributes, they are set between `.def' and
  2388. `.endef' directives.
  2389.  
  2390. 5.5.4.1 Primary Attributes
  2391. ..........................
  2392.  
  2393. The symbol name is set with `.def'; the value and type, respectively,
  2394. with `.val' and `.type'.
  2395.  
  2396. 5.5.4.2 Auxiliary Attributes
  2397. ............................
  2398.  
  2399. The `as' directives `.dim', `.line', `.scl', `.size', `.tag', and
  2400. `.weak' can generate auxiliary symbol table information for COFF.
  2401.  
  2402. 
  2403. File: as.info,  Node: SOM Symbols,  Prev: COFF Symbols,  Up: Symbol Attributes
  2404.  
  2405. 5.5.5 Symbol Attributes for SOM
  2406. -------------------------------
  2407.  
  2408. The SOM format for the HPPA supports a multitude of symbol attributes
  2409. set with the `.EXPORT' and `.IMPORT' directives.
  2410.  
  2411.    The attributes are described in `HP9000 Series 800 Assembly Language
  2412. Reference Manual' (HP 92432-90001) under the `IMPORT' and `EXPORT'
  2413. assembler directive documentation.
  2414.  
  2415. 
  2416. File: as.info,  Node: Expressions,  Next: Pseudo Ops,  Prev: Symbols,  Up: Top
  2417.  
  2418. 6 Expressions
  2419. *************
  2420.  
  2421. An "expression" specifies an address or numeric value.  Whitespace may
  2422. precede and/or follow an expression.
  2423.  
  2424.    The result of an expression must be an absolute number, or else an
  2425. offset into a particular section.  If an expression is not absolute,
  2426. and there is not enough information when `as' sees the expression to
  2427. know its section, a second pass over the source program might be
  2428. necessary to interpret the expression--but the second pass is currently
  2429. not implemented.  `as' aborts with an error message in this situation.
  2430.  
  2431. * Menu:
  2432.  
  2433. * Empty Exprs::                 Empty Expressions
  2434. * Integer Exprs::               Integer Expressions
  2435.  
  2436. 
  2437. File: as.info,  Node: Empty Exprs,  Next: Integer Exprs,  Up: Expressions
  2438.  
  2439. 6.1 Empty Expressions
  2440. =====================
  2441.  
  2442. An empty expression has no value: it is just whitespace or null.
  2443. Wherever an absolute expression is required, you may omit the
  2444. expression, and `as' assumes a value of (absolute) 0.  This is
  2445. compatible with other assemblers.
  2446.  
  2447. 
  2448. File: as.info,  Node: Integer Exprs,  Prev: Empty Exprs,  Up: Expressions
  2449.  
  2450. 6.2 Integer Expressions
  2451. =======================
  2452.  
  2453. An "integer expression" is one or more _arguments_ delimited by
  2454. _operators_.
  2455.  
  2456. * Menu:
  2457.  
  2458. * Arguments::                   Arguments
  2459. * Operators::                   Operators
  2460. * Prefix Ops::                  Prefix Operators
  2461. * Infix Ops::                   Infix Operators
  2462.  
  2463. 
  2464. File: as.info,  Node: Arguments,  Next: Operators,  Up: Integer Exprs
  2465.  
  2466. 6.2.1 Arguments
  2467. ---------------
  2468.  
  2469. "Arguments" are symbols, numbers or subexpressions.  In other contexts
  2470. arguments are sometimes called "arithmetic operands".  In this manual,
  2471. to avoid confusing them with the "instruction operands" of the machine
  2472. language, we use the term "argument" to refer to parts of expressions
  2473. only, reserving the word "operand" to refer only to machine instruction
  2474. operands.
  2475.  
  2476.    Symbols are evaluated to yield {SECTION NNN} where SECTION is one of
  2477. text, data, bss, absolute, or undefined.  NNN is a signed, 2's
  2478. complement 32 bit integer.
  2479.  
  2480.    Numbers are usually integers.
  2481.  
  2482.    A number can be a flonum or bignum.  In this case, you are warned
  2483. that only the low order 32 bits are used, and `as' pretends these 32
  2484. bits are an integer.  You may write integer-manipulating instructions
  2485. that act on exotic constants, compatible with other assemblers.
  2486.  
  2487.    Subexpressions are a left parenthesis `(' followed by an integer
  2488. expression, followed by a right parenthesis `)'; or a prefix operator
  2489. followed by an argument.
  2490.  
  2491. 
  2492. File: as.info,  Node: Operators,  Next: Prefix Ops,  Prev: Arguments,  Up: Integer Exprs
  2493.  
  2494. 6.2.2 Operators
  2495. ---------------
  2496.  
  2497. "Operators" are arithmetic functions, like `+' or `%'.  Prefix
  2498. operators are followed by an argument.  Infix operators appear between
  2499. their arguments.  Operators may be preceded and/or followed by
  2500. whitespace.
  2501.  
  2502. 
  2503. File: as.info,  Node: Prefix Ops,  Next: Infix Ops,  Prev: Operators,  Up: Integer Exprs
  2504.  
  2505. 6.2.3 Prefix Operator
  2506. ---------------------
  2507.  
  2508. `as' has the following "prefix operators".  They each take one
  2509. argument, which must be absolute.
  2510.  
  2511. `-'
  2512.      "Negation".  Two's complement negation.
  2513.  
  2514. `~'
  2515.      "Complementation".  Bitwise not.
  2516.  
  2517. 
  2518. File: as.info,  Node: Infix Ops,  Prev: Prefix Ops,  Up: Integer Exprs
  2519.  
  2520. 6.2.4 Infix Operators
  2521. ---------------------
  2522.  
  2523. "Infix operators" take two arguments, one on either side.  Operators
  2524. have precedence, but operations with equal precedence are performed left
  2525. to right.  Apart from `+' or `-', both arguments must be absolute, and
  2526. the result is absolute.
  2527.  
  2528.   1. Highest Precedence
  2529.  
  2530.     `*'
  2531.           "Multiplication".
  2532.  
  2533.     `/'
  2534.           "Division".  Truncation is the same as the C operator `/'
  2535.  
  2536.     `%'
  2537.           "Remainder".
  2538.  
  2539.     `<'
  2540.     `<<'
  2541.           "Shift Left".  Same as the C operator `<<'.
  2542.  
  2543.     `>'
  2544.     `>>'
  2545.           "Shift Right".  Same as the C operator `>>'.
  2546.  
  2547.   2. Intermediate precedence
  2548.  
  2549.     `|'
  2550.           "Bitwise Inclusive Or".
  2551.  
  2552.     `&'
  2553.           "Bitwise And".
  2554.  
  2555.     `^'
  2556.           "Bitwise Exclusive Or".
  2557.  
  2558.     `!'
  2559.           "Bitwise Or Not".
  2560.  
  2561.   3. Low Precedence
  2562.  
  2563.     `+'
  2564.           "Addition".  If either argument is absolute, the result has
  2565.           the section of the other argument.  You may not add together
  2566.           arguments from different sections.
  2567.  
  2568.     `-'
  2569.           "Subtraction".  If the right argument is absolute, the result
  2570.           has the section of the left argument.  If both arguments are
  2571.           in the same section, the result is absolute.  You may not
  2572.           subtract arguments from different sections.
  2573.  
  2574.     `=='
  2575.           "Is Equal To"
  2576.  
  2577.     `<>'
  2578.           "Is Not Equal To"
  2579.  
  2580.     `<'
  2581.           "Is Less Than"
  2582.  
  2583.     `>'
  2584.           "Is Greater Than"
  2585.  
  2586.     `>='
  2587.           "Is Greater Than Or Equal To"
  2588.  
  2589.     `<='
  2590.           "Is Less Than Or Equal To"
  2591.  
  2592.           The comparison operators can be used as infix operators.  A
  2593.           true results has a value of -1 whereas a false result has a
  2594.           value of 0.   Note, these operators perform signed
  2595.           comparisons.
  2596.  
  2597.   4. Lowest Precedence
  2598.  
  2599.     `&&'
  2600.           "Logical And".
  2601.  
  2602.     `||'
  2603.           "Logical Or".
  2604.  
  2605.           These two logical operations can be used to combine the
  2606.           results of sub expressions.  Note, unlike the comparison
  2607.           operators a true result returns a value of 1 but a false
  2608.           results does still return 0.  Also note that the logical or
  2609.           operator has a slightly lower precedence than logical and.
  2610.  
  2611.  
  2612.    In short, it's only meaningful to add or subtract the _offsets_ in an
  2613. address; you can only have a defined section in one of the two
  2614. arguments.
  2615.  
  2616. 
  2617. File: as.info,  Node: Pseudo Ops,  Next: Machine Dependencies,  Prev: Expressions,  Up: Top
  2618.  
  2619. 7 Assembler Directives
  2620. **********************
  2621.  
  2622. All assembler directives have names that begin with a period (`.').
  2623. The rest of the name is letters, usually in lower case.
  2624.  
  2625.    This chapter discusses directives that are available regardless of
  2626. the target machine configuration for the GNU assembler.  Some machine
  2627. configurations provide additional directives.  *Note Machine
  2628. Dependencies::.
  2629.  
  2630. * Menu:
  2631.  
  2632. * Abort::                       `.abort'
  2633.  
  2634. * ABORT::                       `.ABORT'
  2635.  
  2636. * Align::                       `.align ABS-EXPR , ABS-EXPR'
  2637. * Altmacro::                    `.altmacro'
  2638. * Ascii::                       `.ascii "STRING"'...
  2639. * Asciz::                       `.asciz "STRING"'...
  2640. * Balign::                      `.balign ABS-EXPR , ABS-EXPR'
  2641. * Byte::                        `.byte EXPRESSIONS'
  2642. * Comm::                        `.comm SYMBOL , LENGTH '
  2643.  
  2644. * CFI directives::        `.cfi_startproc', `.cfi_endproc', etc.
  2645.  
  2646. * Data::                        `.data SUBSECTION'
  2647.  
  2648. * Def::                         `.def NAME'
  2649.  
  2650. * Desc::                        `.desc SYMBOL, ABS-EXPRESSION'
  2651.  
  2652. * Dim::                         `.dim'
  2653.  
  2654. * Double::                      `.double FLONUMS'
  2655. * Eject::                       `.eject'
  2656. * Else::                        `.else'
  2657. * Elseif::                      `.elseif'
  2658. * End::                `.end'
  2659.  
  2660. * Endef::                       `.endef'
  2661.  
  2662. * Endfunc::                     `.endfunc'
  2663. * Endif::                       `.endif'
  2664. * Equ::                         `.equ SYMBOL, EXPRESSION'
  2665. * Equiv::                       `.equiv SYMBOL, EXPRESSION'
  2666. * Err::                `.err'
  2667. * Error::            `.error STRING'
  2668. * Exitm::            `.exitm'
  2669. * Extern::                      `.extern'
  2670. * Fail::            `.fail'
  2671.  
  2672. * File::                        `.file STRING'
  2673.  
  2674. * Fill::                        `.fill REPEAT , SIZE , VALUE'
  2675. * Float::                       `.float FLONUMS'
  2676. * Func::                        `.func'
  2677. * Global::                      `.global SYMBOL', `.globl SYMBOL'
  2678.  
  2679. * Hidden::                      `.hidden NAMES'
  2680.  
  2681. * hword::                       `.hword EXPRESSIONS'
  2682. * Ident::                       `.ident'
  2683. * If::                          `.if ABSOLUTE EXPRESSION'
  2684. * Incbin::                      `.incbin "FILE"[,SKIP[,COUNT]]'
  2685. * Include::                     `.include "FILE"'
  2686. * Int::                         `.int EXPRESSIONS'
  2687.  
  2688. * Internal::                    `.internal NAMES'
  2689.  
  2690. * Irp::                `.irp SYMBOL,VALUES'...
  2691. * Irpc::            `.irpc SYMBOL,VALUES'...
  2692. * Lcomm::                       `.lcomm SYMBOL , LENGTH'
  2693. * Lflags::                      `.lflags'
  2694.  
  2695. * Line::                        `.line LINE-NUMBER'
  2696.  
  2697. * Ln::                          `.ln LINE-NUMBER'
  2698. * Linkonce::            `.linkonce [TYPE]'
  2699. * List::                        `.list'
  2700. * Long::                        `.long EXPRESSIONS'
  2701.  
  2702. * Macro::            `.macro NAME ARGS'...
  2703. * MRI::                `.mri VAL'
  2704. * Noaltmacro::                  `.noaltmacro'
  2705. * Nolist::                      `.nolist'
  2706. * Octa::                        `.octa BIGNUMS'
  2707. * Org::                         `.org NEW-LC , FILL'
  2708. * P2align::                     `.p2align ABS-EXPR , ABS-EXPR'
  2709.  
  2710. * PopSection::                  `.popsection'
  2711. * Previous::                    `.previous'
  2712.  
  2713. * Print::            `.print STRING'
  2714.  
  2715. * Protected::                   `.protected NAMES'
  2716.  
  2717. * Psize::                       `.psize LINES, COLUMNS'
  2718. * Purgem::            `.purgem NAME'
  2719.  
  2720. * PushSection::                 `.pushsection NAME'
  2721.  
  2722. * Quad::                        `.quad BIGNUMS'
  2723. * Rept::            `.rept COUNT'
  2724. * Sbttl::                       `.sbttl "SUBHEADING"'
  2725.  
  2726. * Scl::                         `.scl CLASS'
  2727.  
  2728. * Section::                     `.section NAME'
  2729.  
  2730. * Set::                         `.set SYMBOL, EXPRESSION'
  2731. * Short::                       `.short EXPRESSIONS'
  2732. * Single::                      `.single FLONUMS'
  2733.  
  2734. * Size::                        `.size [NAME , EXPRESSION]'
  2735.  
  2736. * Skip::                        `.skip SIZE , FILL'
  2737. * Sleb128::            `.sleb128 EXPRESSIONS'
  2738. * Space::                       `.space SIZE , FILL'
  2739.  
  2740. * Stab::                        `.stabd, .stabn, .stabs'
  2741.  
  2742. * String::                      `.string "STR"'
  2743. * Struct::            `.struct EXPRESSION'
  2744.  
  2745. * SubSection::                  `.subsection'
  2746. * Symver::                      `.symver NAME,NAME2@NODENAME'
  2747.  
  2748.  
  2749. * Tag::                         `.tag STRUCTNAME'
  2750.  
  2751. * Text::                        `.text SUBSECTION'
  2752. * Title::                       `.title "HEADING"'
  2753.  
  2754. * Type::                        `.type <INT | NAME , TYPE DESCRIPTION>'
  2755.  
  2756. * Uleb128::                     `.uleb128 EXPRESSIONS'
  2757.  
  2758. * Val::                         `.val ADDR'
  2759.  
  2760.  
  2761. * Version::                     `.version "STRING"'
  2762. * VTableEntry::                 `.vtable_entry TABLE, OFFSET'
  2763. * VTableInherit::               `.vtable_inherit CHILD, PARENT'
  2764.  
  2765. * Warning::            `.warning STRING'
  2766. * Weak::                        `.weak NAMES'
  2767. * Word::                        `.word EXPRESSIONS'
  2768. * Deprecated::                  Deprecated Directives
  2769.  
  2770. 
  2771. File: as.info,  Node: Abort,  Next: ABORT,  Up: Pseudo Ops
  2772.  
  2773. 7.1 `.abort'
  2774. ============
  2775.  
  2776. This directive stops the assembly immediately.  It is for compatibility
  2777. with other assemblers.  The original idea was that the assembly
  2778. language source would be piped into the assembler.  If the sender of
  2779. the source quit, it could use this directive tells `as' to quit also.
  2780. One day `.abort' will not be supported.
  2781.  
  2782. 
  2783. File: as.info,  Node: ABORT,  Next: Align,  Prev: Abort,  Up: Pseudo Ops
  2784.  
  2785. 7.2 `.ABORT'
  2786. ============
  2787.  
  2788. When producing COFF output, `as' accepts this directive as a synonym
  2789. for `.abort'.
  2790.  
  2791.    When producing `b.out' output, `as' accepts this directive, but
  2792. ignores it.
  2793.  
  2794. 
  2795. File: as.info,  Node: Align,  Next: Altmacro,  Prev: ABORT,  Up: Pseudo Ops
  2796.  
  2797. 7.3 `.align ABS-EXPR, ABS-EXPR, ABS-EXPR'
  2798. =========================================
  2799.  
  2800. Pad the location counter (in the current subsection) to a particular
  2801. storage boundary.  The first expression (which must be absolute) is the
  2802. alignment required, as described below.
  2803.  
  2804.    The second expression (also absolute) gives the fill value to be
  2805. stored in the padding bytes.  It (and the comma) may be omitted.  If it
  2806. is omitted, the padding bytes are normally zero.  However, on some
  2807. systems, if the section is marked as containing code and the fill value
  2808. is omitted, the space is filled with no-op instructions.
  2809.  
  2810.    The third expression is also absolute, and is also optional.  If it
  2811. is present, it is the maximum number of bytes that should be skipped by
  2812. this alignment directive.  If doing the alignment would require
  2813. skipping more bytes than the specified maximum, then the alignment is
  2814. not done at all.  You can omit the fill value (the second argument)
  2815. entirely by simply using two commas after the required alignment; this
  2816. can be useful if you want the alignment to be filled with no-op
  2817. instructions when appropriate.
  2818.  
  2819.    The way the required alignment is specified varies from system to
  2820. system.  For the a29k, arc, hppa, i386 using ELF, i860, iq2000, m68k,
  2821. m88k, or32, s390, sparc, tic4x, tic80 and xtensa, the first expression
  2822. is the alignment request in bytes.  For example `.align 8' advances the
  2823. location counter until it is a multiple of 8.  If the location counter
  2824. is already a multiple of 8, no change is needed.  For the tic54x, the
  2825. first expression is the alignment request in words.
  2826.  
  2827.    For other systems, including the i386 using a.out format, and the
  2828. arm and strongarm, it is the number of low-order zero bits the location
  2829. counter must have after advancement.  For example `.align 3' advances
  2830. the location counter until it a multiple of 8.  If the location counter
  2831. is already a multiple of 8, no change is needed.
  2832.  
  2833.    This inconsistency is due to the different behaviors of the various
  2834. native assemblers for these systems which GAS must emulate.  GAS also
  2835. provides `.balign' and `.p2align' directives, described later, which
  2836. have a consistent behavior across all architectures (but are specific
  2837. to GAS).
  2838.  
  2839. 
  2840. File: as.info,  Node: Ascii,  Next: Asciz,  Prev: Altmacro,  Up: Pseudo Ops
  2841.  
  2842. 7.4 `.ascii "STRING"'...
  2843. ========================
  2844.  
  2845. `.ascii' expects zero or more string literals (*note Strings::)
  2846. separated by commas.  It assembles each string (with no automatic
  2847. trailing zero byte) into consecutive addresses.
  2848.  
  2849. 
  2850. File: as.info,  Node: Asciz,  Next: Balign,  Prev: Ascii,  Up: Pseudo Ops
  2851.  
  2852. 7.5 `.asciz "STRING"'...
  2853. ========================
  2854.  
  2855. `.asciz' is just like `.ascii', but each string is followed by a zero
  2856. byte.  The "z" in `.asciz' stands for "zero".
  2857.  
  2858. 
  2859. File: as.info,  Node: Balign,  Next: Byte,  Prev: Asciz,  Up: Pseudo Ops
  2860.  
  2861. 7.6 `.balign[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR'
  2862. ==============================================
  2863.  
  2864. Pad the location counter (in the current subsection) to a particular
  2865. storage boundary.  The first expression (which must be absolute) is the
  2866. alignment request in bytes.  For example `.balign 8' advances the
  2867. location counter until it is a multiple of 8.  If the location counter
  2868. is already a multiple of 8, no change is needed.
  2869.  
  2870.    The second expression (also absolute) gives the fill value to be
  2871. stored in the padding bytes.  It (and the comma) may be omitted.  If it
  2872. is omitted, the padding bytes are normally zero.  However, on some
  2873. systems, if the section is marked as containing code and the fill value
  2874. is omitted, the space is filled with no-op instructions.
  2875.  
  2876.    The third expression is also absolute, and is also optional.  If it
  2877. is present, it is the maximum number of bytes that should be skipped by
  2878. this alignment directive.  If doing the alignment would require
  2879. skipping more bytes than the specified maximum, then the alignment is
  2880. not done at all.  You can omit the fill value (the second argument)
  2881. entirely by simply using two commas after the required alignment; this
  2882. can be useful if you want the alignment to be filled with no-op
  2883. instructions when appropriate.
  2884.  
  2885.    The `.balignw' and `.balignl' directives are variants of the
  2886. `.balign' directive.  The `.balignw' directive treats the fill pattern
  2887. as a two byte word value.  The `.balignl' directives treats the fill
  2888. pattern as a four byte longword value.  For example, `.balignw
  2889. 4,0x368d' will align to a multiple of 4.  If it skips two bytes, they
  2890. will be filled in with the value 0x368d (the exact placement of the
  2891. bytes depends upon the endianness of the processor).  If it skips 1 or
  2892. 3 bytes, the fill value is undefined.
  2893.  
  2894. 
  2895. File: as.info,  Node: Byte,  Next: Comm,  Prev: Balign,  Up: Pseudo Ops
  2896.  
  2897. 7.7 `.byte EXPRESSIONS'
  2898. =======================
  2899.  
  2900. `.byte' expects zero or more expressions, separated by commas.  Each
  2901. expression is assembled into the next byte.
  2902.  
  2903. 
  2904. File: as.info,  Node: Comm,  Next: CFI directives,  Prev: Byte,  Up: Pseudo Ops
  2905.  
  2906. 7.8 `.comm SYMBOL , LENGTH '
  2907. ============================
  2908.  
  2909. `.comm' declares a common symbol named SYMBOL.  When linking, a common
  2910. symbol in one object file may be merged with a defined or common symbol
  2911. of the same name in another object file.  If `ld' does not see a
  2912. definition for the symbol-just one or more common symbols-then it will
  2913. allocate LENGTH bytes of uninitialized memory.  LENGTH must be an
  2914. absolute expression.  If `ld' sees multiple common symbols with the
  2915. same name, and they do not all have the same size, it will allocate
  2916. space using the largest size.
  2917.  
  2918.    When using ELF, the `.comm' directive takes an optional third
  2919. argument.  This is the desired alignment of the symbol, specified as a
  2920. byte boundary (for example, an alignment of 16 means that the least
  2921. significant 4 bits of the address should be zero).  The alignment must
  2922. be an absolute expression, and it must be a power of two.  If `ld'
  2923. allocates uninitialized memory for the common symbol, it will use the
  2924. alignment when placing the symbol.  If no alignment is specified, `as'
  2925. will set the alignment to the largest power of two less than or equal
  2926. to the size of the symbol, up to a maximum of 16.
  2927.  
  2928.    The syntax for `.comm' differs slightly on the HPPA.  The syntax is
  2929. `SYMBOL .comm, LENGTH'; SYMBOL is optional.
  2930.  
  2931. 
  2932. File: as.info,  Node: CFI directives,  Next: Data,  Prev: Comm,  Up: Pseudo Ops
  2933.  
  2934. 7.9 `.cfi_startproc'
  2935. ====================
  2936.  
  2937. `.cfi_startproc' is used at the beginning of each function that should
  2938. have an entry in `.eh_frame'. It initializes some internal data
  2939. structures and emits architecture dependent initial CFI instructions.
  2940. Don't forget to close the function by `.cfi_endproc'.
  2941.  
  2942. 7.10 `.cfi_endproc'
  2943. ===================
  2944.  
  2945. `.cfi_endproc' is used at the end of a function where it closes its
  2946. unwind entry previously opened by `.cfi_startproc'. and emits it to
  2947. `.eh_frame'.
  2948.  
  2949. 7.11 `.cfi_def_cfa REGISTER, OFFSET'
  2950. ====================================
  2951.  
  2952. `.cfi_def_cfa' defines a rule for computing CFA as: take address from
  2953. REGISTER and add OFFSET to it.
  2954.  
  2955. 7.12 `.cfi_def_cfa_register REGISTER'
  2956. =====================================
  2957.  
  2958. `.cfi_def_cfa_register' modifies a rule for computing CFA. From now on
  2959. REGISTER will be used instead of the old one. Offset remains the same.
  2960.  
  2961. 7.13 `.cfi_def_cfa_offset OFFSET'
  2962. =================================
  2963.  
  2964. `.cfi_def_cfa_offset' modifies a rule for computing CFA. Register
  2965. remains the same, but OFFSET is new. Note that it is the absolute
  2966. offset that will be added to a defined register to compute CFA address.
  2967.  
  2968. 7.14 `.cfi_adjust_cfa_offset OFFSET'
  2969. ====================================
  2970.  
  2971. Same as `.cfi_def_cfa_offset' but OFFSET is a relative value that is
  2972. added/substracted from the previous offset.
  2973.  
  2974. 7.15 `.cfi_offset REGISTER, OFFSET'
  2975. ===================================
  2976.  
  2977. Previous value of REGISTER is saved at offset OFFSET from CFA.
  2978.  
  2979. 7.16 `.cfi_rel_offset REGISTER, OFFSET'
  2980. =======================================
  2981.  
  2982. Previous value of REGISTER is saved at offset OFFSET from the current
  2983. CFA register.  This is transformed to `.cfi_offset' using the known
  2984. displacement of the CFA register from the CFA.  This is often easier to
  2985. use, because the number will match the code it's annotating.
  2986.  
  2987. 7.17 `.cfi_window_save'
  2988. =======================
  2989.  
  2990. SPARC register window has been saved.
  2991.  
  2992. 7.18 `.cfi_escape' EXPRESSION[, ...]
  2993. ====================================
  2994.  
  2995. Allows the user to add arbitrary bytes to the unwind info.  One might
  2996. use this to add OS-specific CFI opcodes, or generic CFI opcodes that
  2997. GAS does not yet support.
  2998.  
  2999. 
  3000. File: as.info,  Node: Data,  Next: Def,  Prev: CFI directives,  Up: Pseudo Ops
  3001.  
  3002. 7.19 `.data SUBSECTION'
  3003. =======================
  3004.  
  3005. `.data' tells `as' to assemble the following statements onto the end of
  3006. the data subsection numbered SUBSECTION (which is an absolute
  3007. expression).  If SUBSECTION is omitted, it defaults to zero.
  3008.  
  3009. 
  3010. File: as.info,  Node: Def,  Next: Desc,  Prev: Data,  Up: Pseudo Ops
  3011.  
  3012. 7.20 `.def NAME'
  3013. ================
  3014.  
  3015. Begin defining debugging information for a symbol NAME; the definition
  3016. extends until the `.endef' directive is encountered.
  3017.  
  3018.    This directive is only observed when `as' is configured for COFF
  3019. format output; when producing `b.out', `.def' is recognized, but
  3020. ignored.
  3021.  
  3022. 
  3023. File: as.info,  Node: Desc,  Next: Dim,  Prev: Def,  Up: Pseudo Ops
  3024.  
  3025. 7.21 `.desc SYMBOL, ABS-EXPRESSION'
  3026. ===================================
  3027.  
  3028. This directive sets the descriptor of the symbol (*note Symbol
  3029. Attributes::) to the low 16 bits of an absolute expression.
  3030.  
  3031.    The `.desc' directive is not available when `as' is configured for
  3032. COFF output; it is only for `a.out' or `b.out' object format.  For the
  3033. sake of compatibility, `as' accepts it, but produces no output, when
  3034. configured for COFF.
  3035.  
  3036. 
  3037. File: as.info,  Node: Dim,  Next: Double,  Prev: Desc,  Up: Pseudo Ops
  3038.  
  3039. 7.22 `.dim'
  3040. ===========
  3041.  
  3042. This directive is generated by compilers to include auxiliary debugging
  3043. information in the symbol table.  It is only permitted inside
  3044. `.def'/`.endef' pairs.
  3045.  
  3046.    `.dim' is only meaningful when generating COFF format output; when
  3047. `as' is generating `b.out', it accepts this directive but ignores it.
  3048.  
  3049. 
  3050. File: as.info,  Node: Double,  Next: Eject,  Prev: Dim,  Up: Pseudo Ops
  3051.  
  3052. 7.23 `.double FLONUMS'
  3053. ======================
  3054.  
  3055. `.double' expects zero or more flonums, separated by commas.  It
  3056. assembles floating point numbers.  The exact kind of floating point
  3057. numbers emitted depends on how `as' is configured.  *Note Machine
  3058. Dependencies::.
  3059.  
  3060. 
  3061. File: as.info,  Node: Eject,  Next: Else,  Prev: Double,  Up: Pseudo Ops
  3062.  
  3063. 7.24 `.eject'
  3064. =============
  3065.  
  3066. Force a page break at this point, when generating assembly listings.
  3067.  
  3068. 
  3069. File: as.info,  Node: Else,  Next: Elseif,  Prev: Eject,  Up: Pseudo Ops
  3070.  
  3071. 7.25 `.else'
  3072. ============
  3073.  
  3074. `.else' is part of the `as' support for conditional assembly; *note
  3075. `.if': If.  It marks the beginning of a section of code to be assembled
  3076. if the condition for the preceding `.if' was false.
  3077.  
  3078. 
  3079. File: as.info,  Node: Elseif,  Next: End,  Prev: Else,  Up: Pseudo Ops
  3080.  
  3081. 7.26 `.elseif'
  3082. ==============
  3083.  
  3084. `.elseif' is part of the `as' support for conditional assembly; *note
  3085. `.if': If.  It is shorthand for beginning a new `.if' block that would
  3086. otherwise fill the entire `.else' section.
  3087.  
  3088. 
  3089. File: as.info,  Node: End,  Next: Endef,  Prev: Elseif,  Up: Pseudo Ops
  3090.  
  3091. 7.27 `.end'
  3092. ===========
  3093.  
  3094. `.end' marks the end of the assembly file.  `as' does not process
  3095. anything in the file past the `.end' directive.
  3096.  
  3097. 
  3098. File: as.info,  Node: Endef,  Next: Endfunc,  Prev: End,  Up: Pseudo Ops
  3099.  
  3100. 7.28 `.endef'
  3101. =============
  3102.  
  3103. This directive flags the end of a symbol definition begun with `.def'.
  3104.  
  3105.    `.endef' is only meaningful when generating COFF format output; if
  3106. `as' is configured to generate `b.out', it accepts this directive but
  3107. ignores it.
  3108.  
  3109. 
  3110. File: as.info,  Node: Endfunc,  Next: Endif,  Prev: Endef,  Up: Pseudo Ops
  3111.  
  3112. 7.29 `.endfunc'
  3113. ===============
  3114.  
  3115. `.endfunc' marks the end of a function specified with `.func'.
  3116.  
  3117. 
  3118. File: as.info,  Node: Endif,  Next: Equ,  Prev: Endfunc,  Up: Pseudo Ops
  3119.  
  3120. 7.30 `.endif'
  3121. =============
  3122.  
  3123. `.endif' is part of the `as' support for conditional assembly; it marks
  3124. the end of a block of code that is only assembled conditionally.  *Note
  3125. `.if': If.
  3126.  
  3127. 
  3128. File: as.info,  Node: Equ,  Next: Equiv,  Prev: Endif,  Up: Pseudo Ops
  3129.  
  3130. 7.31 `.equ SYMBOL, EXPRESSION'
  3131. ==============================
  3132.  
  3133. This directive sets the value of SYMBOL to EXPRESSION.  It is
  3134. synonymous with `.set'; *note `.set': Set.
  3135.  
  3136.    The syntax for `equ' on the HPPA is `SYMBOL .equ EXPRESSION'.
  3137.  
  3138. 
  3139. File: as.info,  Node: Equiv,  Next: Err,  Prev: Equ,  Up: Pseudo Ops
  3140.  
  3141. 7.32 `.equiv SYMBOL, EXPRESSION'
  3142. ================================
  3143.  
  3144. The `.equiv' directive is like `.equ' and `.set', except that the
  3145. assembler will signal an error if SYMBOL is already defined.  Note a
  3146. symbol which has been referenced but not actually defined is considered
  3147. to be undefined.
  3148.  
  3149.    Except for the contents of the error message, this is roughly
  3150. equivalent to
  3151.      .ifdef SYM
  3152.      .err
  3153.      .endif
  3154.      .equ SYM,VAL
  3155.  
  3156. 
  3157. File: as.info,  Node: Err,  Next: Error,  Prev: Equiv,  Up: Pseudo Ops
  3158.  
  3159. 7.33 `.err'
  3160. ===========
  3161.  
  3162. If `as' assembles a `.err' directive, it will print an error message
  3163. and, unless the `-Z' option was used, it will not generate an object
  3164. file.  This can be used to signal error an conditionally compiled code.
  3165.  
  3166. 
  3167. File: as.info,  Node: Error,  Next: Exitm,  Prev: Err,  Up: Pseudo Ops
  3168.  
  3169. 7.34 `.error "STRING"'
  3170. ======================
  3171.  
  3172. Similarly to `.err', this directive emits an error, but you can specify
  3173. a string that will be emitted as the error message.  If you don't
  3174. specify the message, it defaults to `".error directive invoked in
  3175. source file"'.  *Note Error and Warning Messages: Errors.
  3176.  
  3177.       .error "This code has not been assembled and tested."
  3178.  
  3179. 
  3180. File: as.info,  Node: Exitm,  Next: Extern,  Prev: Error,  Up: Pseudo Ops
  3181.  
  3182. 7.35 `.exitm'
  3183. =============
  3184.  
  3185. Exit early from the current macro definition.  *Note Macro::.
  3186.  
  3187. 
  3188. File: as.info,  Node: Extern,  Next: Fail,  Prev: Exitm,  Up: Pseudo Ops
  3189.  
  3190. 7.36 `.extern'
  3191. ==============
  3192.  
  3193. `.extern' is accepted in the source program--for compatibility with
  3194. other assemblers--but it is ignored.  `as' treats all undefined symbols
  3195. as external.
  3196.  
  3197. 
  3198. File: as.info,  Node: Fail,  Next: File,  Prev: Extern,  Up: Pseudo Ops
  3199.  
  3200. 7.37 `.fail EXPRESSION'
  3201. =======================
  3202.  
  3203. Generates an error or a warning.  If the value of the EXPRESSION is 500
  3204. or more, `as' will print a warning message.  If the value is less than
  3205. 500, `as' will print an error message.  The message will include the
  3206. value of EXPRESSION.  This can occasionally be useful inside complex
  3207. nested macros or conditional assembly.
  3208.  
  3209. 
  3210. File: as.info,  Node: File,  Next: Fill,  Prev: Fail,  Up: Pseudo Ops
  3211.  
  3212. 7.38 `.file STRING'
  3213. ===================
  3214.  
  3215. `.file' tells `as' that we are about to start a new logical file.
  3216. STRING is the new file name.  In general, the filename is recognized
  3217. whether or not it is surrounded by quotes `"'; but if you wish to
  3218. specify an empty file name, you must give the quotes-`""'.  This
  3219. statement may go away in future: it is only recognized to be compatible
  3220. with old `as' programs.  In some configurations of `as', `.file' has
  3221. already been removed to avoid conflicts with other assemblers.  *Note
  3222. Machine Dependencies::.
  3223.  
  3224. 
  3225. File: as.info,  Node: Fill,  Next: Float,  Prev: File,  Up: Pseudo Ops
  3226.  
  3227. 7.39 `.fill REPEAT , SIZE , VALUE'
  3228. ==================================
  3229.  
  3230. REPEAT, SIZE and VALUE are absolute expressions.  This emits REPEAT
  3231. copies of SIZE bytes.  REPEAT may be zero or more.  SIZE may be zero or
  3232. more, but if it is more than 8, then it is deemed to have the value 8,
  3233. compatible with other people's assemblers.  The contents of each REPEAT
  3234. bytes is taken from an 8-byte number.  The highest order 4 bytes are
  3235. zero.  The lowest order 4 bytes are VALUE rendered in the byte-order of
  3236. an integer on the computer `as' is assembling for.  Each SIZE bytes in
  3237. a repetition is taken from the lowest order SIZE bytes of this number.
  3238. Again, this bizarre behavior is compatible with other people's
  3239. assemblers.
  3240.  
  3241.    SIZE and VALUE are optional.  If the second comma and VALUE are
  3242. absent, VALUE is assumed zero.  If the first comma and following tokens
  3243. are absent, SIZE is assumed to be 1.
  3244.  
  3245. 
  3246. File: as.info,  Node: Float,  Next: Func,  Prev: Fill,  Up: Pseudo Ops
  3247.  
  3248. 7.40 `.float FLONUMS'
  3249. =====================
  3250.  
  3251. This directive assembles zero or more flonums, separated by commas.  It
  3252. has the same effect as `.single'.  The exact kind of floating point
  3253. numbers emitted depends on how `as' is configured.  *Note Machine
  3254. Dependencies::.
  3255.  
  3256. 
  3257. File: as.info,  Node: Func,  Next: Global,  Prev: Float,  Up: Pseudo Ops
  3258.  
  3259. 7.41 `.func NAME[,LABEL]'
  3260. =========================
  3261.  
  3262. `.func' emits debugging information to denote function NAME, and is
  3263. ignored unless the file is assembled with debugging enabled.  Only
  3264. `--gstabs[+]' is currently supported.  LABEL is the entry point of the
  3265. function and if omitted NAME prepended with the `leading char' is used.
  3266. `leading char' is usually `_' or nothing, depending on the target.  All
  3267. functions are currently defined to have `void' return type.  The
  3268. function must be terminated with `.endfunc'.
  3269.  
  3270. 
  3271. File: as.info,  Node: Global,  Next: Hidden,  Prev: Func,  Up: Pseudo Ops
  3272.  
  3273. 7.42 `.global SYMBOL', `.globl SYMBOL'
  3274. ======================================
  3275.  
  3276. `.global' makes the symbol visible to `ld'.  If you define SYMBOL in
  3277. your partial program, its value is made available to other partial
  3278. programs that are linked with it.  Otherwise, SYMBOL takes its
  3279. attributes from a symbol of the same name from another file linked into
  3280. the same program.
  3281.  
  3282.    Both spellings (`.globl' and `.global') are accepted, for
  3283. compatibility with other assemblers.
  3284.  
  3285.    On the HPPA, `.global' is not always enough to make it accessible to
  3286. other partial programs.  You may need the HPPA-only `.EXPORT' directive
  3287. as well.  *Note HPPA Assembler Directives: HPPA Directives.
  3288.  
  3289. 
  3290. File: as.info,  Node: Hidden,  Next: hword,  Prev: Global,  Up: Pseudo Ops
  3291.  
  3292. 7.43 `.hidden NAMES'
  3293. ====================
  3294.  
  3295. This is one of the ELF visibility directives.  The other two are
  3296. `.internal' (*note `.internal': Internal.) and `.protected' (*note
  3297. `.protected': Protected.).
  3298.  
  3299.    This directive overrides the named symbols default visibility (which
  3300. is set by their binding: local, global or weak).  The directive sets
  3301. the visibility to `hidden' which means that the symbols are not visible
  3302. to other components.  Such symbols are always considered to be
  3303. `protected' as well.
  3304.  
  3305. 
  3306. File: as.info,  Node: hword,  Next: Ident,  Prev: Hidden,  Up: Pseudo Ops
  3307.  
  3308. 7.44 `.hword EXPRESSIONS'
  3309. =========================
  3310.  
  3311. This expects zero or more EXPRESSIONS, and emits a 16 bit number for
  3312. each.
  3313.  
  3314.    This directive is a synonym for `.short'; depending on the target
  3315. architecture, it may also be a synonym for `.word'.
  3316.  
  3317. 
  3318. File: as.info,  Node: Ident,  Next: If,  Prev: hword,  Up: Pseudo Ops
  3319.  
  3320. 7.45 `.ident'
  3321. =============
  3322.  
  3323. This directive is used by some assemblers to place tags in object files.
  3324. `as' simply accepts the directive for source-file compatibility with
  3325. such assemblers, but does not actually emit anything for it.
  3326.  
  3327. 
  3328. File: as.info,  Node: If,  Next: Incbin,  Prev: Ident,  Up: Pseudo Ops
  3329.  
  3330. 7.46 `.if ABSOLUTE EXPRESSION'
  3331. ==============================
  3332.  
  3333. `.if' marks the beginning of a section of code which is only considered
  3334. part of the source program being assembled if the argument (which must
  3335. be an ABSOLUTE EXPRESSION) is non-zero.  The end of the conditional
  3336. section of code must be marked by `.endif' (*note `.endif': Endif.);
  3337. optionally, you may include code for the alternative condition, flagged
  3338. by `.else' (*note `.else': Else.).  If you have several conditions to
  3339. check, `.elseif' may be used to avoid nesting blocks if/else within
  3340. each subsequent `.else' block.
  3341.  
  3342.    The following variants of `.if' are also supported:
  3343. `.ifdef SYMBOL'
  3344.      Assembles the following section of code if the specified SYMBOL
  3345.      has been defined.  Note a symbol which has been referenced but not
  3346.      yet defined is considered to be undefined.
  3347.  
  3348. `.ifc STRING1,STRING2'
  3349.      Assembles the following section of code if the two strings are the
  3350.      same.  The strings may be optionally quoted with single quotes.
  3351.      If they are not quoted, the first string stops at the first comma,
  3352.      and the second string stops at the end of the line.  Strings which
  3353.      contain whitespace should be quoted.  The string comparison is
  3354.      case sensitive.
  3355.  
  3356. `.ifeq ABSOLUTE EXPRESSION'
  3357.      Assembles the following section of code if the argument is zero.
  3358.  
  3359. `.ifeqs STRING1,STRING2'
  3360.      Another form of `.ifc'.  The strings must be quoted using double
  3361.      quotes.
  3362.  
  3363. `.ifge ABSOLUTE EXPRESSION'
  3364.      Assembles the following section of code if the argument is greater
  3365.      than or equal to zero.
  3366.  
  3367. `.ifgt ABSOLUTE EXPRESSION'
  3368.      Assembles the following section of code if the argument is greater
  3369.      than zero.
  3370.  
  3371. `.ifle ABSOLUTE EXPRESSION'
  3372.      Assembles the following section of code if the argument is less
  3373.      than or equal to zero.
  3374.  
  3375. `.iflt ABSOLUTE EXPRESSION'
  3376.      Assembles the following section of code if the argument is less
  3377.      than zero.
  3378.  
  3379. `.ifnc STRING1,STRING2.'
  3380.      Like `.ifc', but the sense of the test is reversed: this assembles
  3381.      the following section of code if the two strings are not the same.
  3382.  
  3383. `.ifndef SYMBOL'
  3384. `.ifnotdef SYMBOL'
  3385.      Assembles the following section of code if the specified SYMBOL
  3386.      has not been defined.  Both spelling variants are equivalent.
  3387.      Note a symbol which has been referenced but not yet defined is
  3388.      considered to be undefined.
  3389.  
  3390. `.ifne ABSOLUTE EXPRESSION'
  3391.      Assembles the following section of code if the argument is not
  3392.      equal to zero (in other words, this is equivalent to `.if').
  3393.  
  3394. `.ifnes STRING1,STRING2'
  3395.      Like `.ifeqs', but the sense of the test is reversed: this
  3396.      assembles the following section of code if the two strings are not
  3397.      the same.
  3398.  
  3399. 
  3400. File: as.info,  Node: Incbin,  Next: Include,  Prev: If,  Up: Pseudo Ops
  3401.  
  3402. 7.47 `.incbin "FILE"[,SKIP[,COUNT]]'
  3403. ====================================
  3404.  
  3405. The `incbin' directive includes FILE verbatim at the current location.
  3406. You can control the search paths used with the `-I' command-line option
  3407. (*note Command-Line Options: Invoking.).  Quotation marks are required
  3408. around FILE.
  3409.  
  3410.    The SKIP argument skips a number of bytes from the start of the
  3411. FILE.  The COUNT argument indicates the maximum number of bytes to
  3412. read.  Note that the data is not aligned in any way, so it is the user's
  3413. responsibility to make sure that proper alignment is provided both
  3414. before and after the `incbin' directive.
  3415.  
  3416. 
  3417. File: as.info,  Node: Include,  Next: Int,  Prev: Incbin,  Up: Pseudo Ops
  3418.  
  3419. 7.48 `.include "FILE"'
  3420. ======================
  3421.  
  3422. This directive provides a way to include supporting files at specified
  3423. points in your source program.  The code from FILE is assembled as if
  3424. it followed the point of the `.include'; when the end of the included
  3425. file is reached, assembly of the original file continues.  You can
  3426. control the search paths used with the `-I' command-line option (*note
  3427. Command-Line Options: Invoking.).  Quotation marks are required around
  3428. FILE.
  3429.  
  3430. 
  3431. File: as.info,  Node: Int,  Next: Internal,  Prev: Include,  Up: Pseudo Ops
  3432.  
  3433. 7.49 `.int EXPRESSIONS'
  3434. =======================
  3435.  
  3436. Expect zero or more EXPRESSIONS, of any section, separated by commas.
  3437. For each expression, emit a number that, at run time, is the value of
  3438. that expression.  The byte order and bit size of the number depends on
  3439. what kind of target the assembly is for.
  3440.  
  3441. 
  3442. File: as.info,  Node: Internal,  Next: Irp,  Prev: Int,  Up: Pseudo Ops
  3443.  
  3444. 7.50 `.internal NAMES'
  3445. ======================
  3446.  
  3447. This is one of the ELF visibility directives.  The other two are
  3448. `.hidden' (*note `.hidden': Hidden.) and `.protected' (*note
  3449. `.protected': Protected.).
  3450.  
  3451.    This directive overrides the named symbols default visibility (which
  3452. is set by their binding: local, global or weak).  The directive sets
  3453. the visibility to `internal' which means that the symbols are
  3454. considered to be `hidden' (i.e., not visible to other components), and
  3455. that some extra, processor specific processing must also be performed
  3456. upon the  symbols as well.
  3457.  
  3458. 
  3459. File: as.info,  Node: Irp,  Next: Irpc,  Prev: Internal,  Up: Pseudo Ops
  3460.  
  3461. 7.51 `.irp SYMBOL,VALUES'...
  3462. ============================
  3463.  
  3464. Evaluate a sequence of statements assigning different values to SYMBOL.
  3465. The sequence of statements starts at the `.irp' directive, and is
  3466. terminated by an `.endr' directive.  For each VALUE, SYMBOL is set to
  3467. VALUE, and the sequence of statements is assembled.  If no VALUE is
  3468. listed, the sequence of statements is assembled once, with SYMBOL set
  3469. to the null string.  To refer to SYMBOL within the sequence of
  3470. statements, use \SYMBOL.
  3471.  
  3472.    For example, assembling
  3473.  
  3474.              .irp    param,1,2,3
  3475.              move    d\param,sp@-
  3476.              .endr
  3477.  
  3478.    is equivalent to assembling
  3479.  
  3480.              move    d1,sp@-
  3481.              move    d2,sp@-
  3482.              move    d3,sp@-
  3483.  
  3484. 
  3485. File: as.info,  Node: Irpc,  Next: Lcomm,  Prev: Irp,  Up: Pseudo Ops
  3486.  
  3487. 7.52 `.irpc SYMBOL,VALUES'...
  3488. =============================
  3489.  
  3490. Evaluate a sequence of statements assigning different values to SYMBOL.
  3491. The sequence of statements starts at the `.irpc' directive, and is
  3492. terminated by an `.endr' directive.  For each character in VALUE,
  3493. SYMBOL is set to the character, and the sequence of statements is
  3494. assembled.  If no VALUE is listed, the sequence of statements is
  3495. assembled once, with SYMBOL set to the null string.  To refer to SYMBOL
  3496. within the sequence of statements, use \SYMBOL.
  3497.  
  3498.    For example, assembling
  3499.  
  3500.              .irpc    param,123
  3501.              move    d\param,sp@-
  3502.              .endr
  3503.  
  3504.    is equivalent to assembling
  3505.  
  3506.              move    d1,sp@-
  3507.              move    d2,sp@-
  3508.              move    d3,sp@-
  3509.  
  3510. 
  3511. File: as.info,  Node: Lcomm,  Next: Lflags,  Prev: Irpc,  Up: Pseudo Ops
  3512.  
  3513. 7.53 `.lcomm SYMBOL , LENGTH'
  3514. =============================
  3515.  
  3516. Reserve LENGTH (an absolute expression) bytes for a local common
  3517. denoted by SYMBOL.  The section and value of SYMBOL are those of the
  3518. new local common.  The addresses are allocated in the bss section, so
  3519. that at run-time the bytes start off zeroed.  SYMBOL is not declared
  3520. global (*note `.global': Global.), so is normally not visible to `ld'.
  3521.  
  3522.    Some targets permit a third argument to be used with `.lcomm'.  This
  3523. argument specifies the desired alignment of the symbol in the bss
  3524. section.
  3525.  
  3526.    The syntax for `.lcomm' differs slightly on the HPPA.  The syntax is
  3527. `SYMBOL .lcomm, LENGTH'; SYMBOL is optional.
  3528.  
  3529. 
  3530. File: as.info,  Node: Lflags,  Next: Line,  Prev: Lcomm,  Up: Pseudo Ops
  3531.  
  3532. 7.54 `.lflags'
  3533. ==============
  3534.  
  3535. `as' accepts this directive, for compatibility with other assemblers,
  3536. but ignores it.
  3537.  
  3538. 
  3539. File: as.info,  Node: Line,  Next: Ln,  Prev: Lflags,  Up: Pseudo Ops
  3540.  
  3541. 7.55 `.line LINE-NUMBER'
  3542. ========================
  3543.  
  3544.    Change the logical line number.  LINE-NUMBER must be an absolute
  3545. expression.  The next line has that logical line number.  Therefore any
  3546. other statements on the current line (after a statement separator
  3547. character) are reported as on logical line number LINE-NUMBER - 1.  One
  3548. day `as' will no longer support this directive: it is recognized only
  3549. for compatibility with existing assembler programs.
  3550.  
  3551.    _Warning:_ In the AMD29K configuration of as, this command is not
  3552. available; use the synonym `.ln' in that context.
  3553.  
  3554.    Even though this is a directive associated with the `a.out' or
  3555. `b.out' object-code formats, `as' still recognizes it when producing
  3556. COFF output, and treats `.line' as though it were the COFF `.ln' _if_
  3557. it is found outside a `.def'/`.endef' pair.
  3558.  
  3559.    Inside a `.def', `.line' is, instead, one of the directives used by
  3560. compilers to generate auxiliary symbol information for debugging.
  3561.  
  3562. 
  3563. File: as.info,  Node: Linkonce,  Next: List,  Prev: Ln,  Up: Pseudo Ops
  3564.  
  3565. 7.56 `.linkonce [TYPE]'
  3566. =======================
  3567.  
  3568. Mark the current section so that the linker only includes a single copy
  3569. of it.  This may be used to include the same section in several
  3570. different object files, but ensure that the linker will only include it
  3571. once in the final output file.  The `.linkonce' pseudo-op must be used
  3572. for each instance of the section.  Duplicate sections are detected
  3573. based on the section name, so it should be unique.
  3574.  
  3575.    This directive is only supported by a few object file formats; as of
  3576. this writing, the only object file format which supports it is the
  3577. Portable Executable format used on Windows NT.
  3578.  
  3579.    The TYPE argument is optional.  If specified, it must be one of the
  3580. following strings.  For example:
  3581.      .linkonce same_size
  3582.    Not all types may be supported on all object file formats.
  3583.  
  3584. `discard'
  3585.      Silently discard duplicate sections.  This is the default.
  3586.  
  3587. `one_only'
  3588.      Warn if there are duplicate sections, but still keep only one copy.
  3589.  
  3590. `same_size'
  3591.      Warn if any of the duplicates have different sizes.
  3592.  
  3593. `same_contents'
  3594.      Warn if any of the duplicates do not have exactly the same
  3595.      contents.
  3596.  
  3597. 
  3598. File: as.info,  Node: Ln,  Next: Linkonce,  Prev: Line,  Up: Pseudo Ops
  3599.  
  3600. 7.57 `.ln LINE-NUMBER'
  3601. ======================
  3602.  
  3603. `.ln' is a synonym for `.line'.
  3604.  
  3605. 
  3606. File: as.info,  Node: MRI,  Next: Noaltmacro,  Prev: Macro,  Up: Pseudo Ops
  3607.  
  3608. 7.58 `.mri VAL'
  3609. ===============
  3610.  
  3611. If VAL is non-zero, this tells `as' to enter MRI mode.  If VAL is zero,
  3612. this tells `as' to exit MRI mode.  This change affects code assembled
  3613. until the next `.mri' directive, or until the end of the file.  *Note
  3614. MRI mode: M.
  3615.  
  3616. 
  3617. File: as.info,  Node: List,  Next: Long,  Prev: Linkonce,  Up: Pseudo Ops
  3618.  
  3619. 7.59 `.list'
  3620. ============
  3621.  
  3622. Control (in conjunction with the `.nolist' directive) whether or not
  3623. assembly listings are generated.  These two directives maintain an
  3624. internal counter (which is zero initially).   `.list' increments the
  3625. counter, and `.nolist' decrements it.  Assembly listings are generated
  3626. whenever the counter is greater than zero.
  3627.  
  3628.    By default, listings are disabled.  When you enable them (with the
  3629. `-a' command line option; *note Command-Line Options: Invoking.), the
  3630. initial value of the listing counter is one.
  3631.  
  3632. 
  3633. File: as.info,  Node: Long,  Next: Macro,  Prev: List,  Up: Pseudo Ops
  3634.  
  3635. 7.60 `.long EXPRESSIONS'
  3636. ========================
  3637.  
  3638. `.long' is the same as `.int', *note `.int': Int.
  3639.  
  3640. 
  3641. File: as.info,  Node: Macro,  Next: MRI,  Prev: Long,  Up: Pseudo Ops
  3642.  
  3643. 7.61 `.macro'
  3644. =============
  3645.  
  3646. The commands `.macro' and `.endm' allow you to define macros that
  3647. generate assembly output.  For example, this definition specifies a
  3648. macro `sum' that puts a sequence of numbers into memory:
  3649.  
  3650.              .macro  sum from=0, to=5
  3651.              .long   \from
  3652.              .if     \to-\from
  3653.              sum     "(\from+1)",\to
  3654.              .endif
  3655.              .endm
  3656.  
  3657. With that definition, `SUM 0,5' is equivalent to this assembly input:
  3658.  
  3659.              .long   0
  3660.              .long   1
  3661.              .long   2
  3662.              .long   3
  3663.              .long   4
  3664.              .long   5
  3665.  
  3666. `.macro MACNAME'
  3667. `.macro MACNAME MACARGS ...'
  3668.      Begin the definition of a macro called MACNAME.  If your macro
  3669.      definition requires arguments, specify their names after the macro
  3670.      name, separated by commas or spaces.  You can supply a default
  3671.      value for any macro argument by following the name with `=DEFLT'.
  3672.      You cannot define two macros with the same MACNAME unless it has
  3673.      been subject to the `.purgem' directive (*Note Purgem::.) between
  3674.      the two definitions.  For example, these are all valid `.macro'
  3675.      statements:
  3676.  
  3677.     `.macro comm'
  3678.           Begin the definition of a macro called `comm', which takes no
  3679.           arguments.
  3680.  
  3681.     `.macro plus1 p, p1'
  3682.     `.macro plus1 p p1'
  3683.           Either statement begins the definition of a macro called
  3684.           `plus1', which takes two arguments; within the macro
  3685.           definition, write `\p' or `\p1' to evaluate the arguments.
  3686.  
  3687.     `.macro reserve_str p1=0 p2'
  3688.           Begin the definition of a macro called `reserve_str', with two
  3689.           arguments.  The first argument has a default value, but not
  3690.           the second.  After the definition is complete, you can call
  3691.           the macro either as `reserve_str A,B' (with `\p1' evaluating
  3692.           to A and `\p2' evaluating to B), or as `reserve_str ,B' (with
  3693.           `\p1' evaluating as the default, in this case `0', and `\p2'
  3694.           evaluating to B).
  3695.  
  3696.      When you call a macro, you can specify the argument values either
  3697.      by position, or by keyword.  For example, `sum 9,17' is equivalent
  3698.      to `sum to=17, from=9'.
  3699.  
  3700. `.endm'
  3701.      Mark the end of a macro definition.
  3702.  
  3703. `.exitm'
  3704.      Exit early from the current macro definition.
  3705.  
  3706. `\@'
  3707.      `as' maintains a counter of how many macros it has executed in
  3708.      this pseudo-variable; you can copy that number to your output with
  3709.      `\@', but _only within a macro definition_.
  3710.  
  3711. `LOCAL NAME [ , ... ]'
  3712.      _Warning: `LOCAL' is only available if you select "alternate macro
  3713.      syntax" with `--alternate' or `.altmacro'._ *Note `.altmacro':
  3714.      Altmacro.
  3715.  
  3716. 
  3717. File: as.info,  Node: Altmacro,  Next: Ascii,  Prev: Align,  Up: Pseudo Ops
  3718.  
  3719. 7.62 `.altmacro'
  3720. ================
  3721.  
  3722. Enable alternate macro mode, enabling:
  3723.  
  3724. `LOCAL NAME [ , ... ]'
  3725.      One additional directive, `LOCAL', is available.  It is used to
  3726.      generate a string replacement for each of the NAME arguments, and
  3727.      replace any instances of NAME in each macro expansion.  The
  3728.      replacement string is unique in the assembly, and different for
  3729.      each separate macro expansion.  `LOCAL' allows you to write macros
  3730.      that define symbols, without fear of conflict between separate
  3731.      macro expansions.
  3732.  
  3733. `String delimiters'
  3734.      You can write strings delimited in these other ways besides
  3735.      `"STRING"':
  3736.  
  3737.     `'STRING''
  3738.           You can delimit strings with single-quote charaters.
  3739.  
  3740.     `<STRING>'
  3741.           You can delimit strings with matching angle brackets.
  3742.  
  3743. `single-character string escape'
  3744.      To include any single character literally in a string (even if the
  3745.      character would otherwise have some special meaning), you can
  3746.      prefix the character with `!' (an exclamation mark).  For example,
  3747.      you can write `<4.3 !> 5.4!!>' to get the literal text `4.3 >
  3748.      5.4!'.
  3749.  
  3750. `Expression results as strings'
  3751.      You can write `%EXPR' to evaluate the expression EXPR and use the
  3752.      result as a string.
  3753.  
  3754. 
  3755. File: as.info,  Node: Noaltmacro,  Next: Nolist,  Prev: MRI,  Up: Pseudo Ops
  3756.  
  3757. 7.63 `.noaltmacro'
  3758. ==================
  3759.  
  3760. Disable alternate macro mode.  *Note Altmacro::
  3761.  
  3762. 
  3763. File: as.info,  Node: Nolist,  Next: Octa,  Prev: Noaltmacro,  Up: Pseudo Ops
  3764.  
  3765. 7.64 `.nolist'
  3766. ==============
  3767.  
  3768. Control (in conjunction with the `.list' directive) whether or not
  3769. assembly listings are generated.  These two directives maintain an
  3770. internal counter (which is zero initially).   `.list' increments the
  3771. counter, and `.nolist' decrements it.  Assembly listings are generated
  3772. whenever the counter is greater than zero.
  3773.  
  3774. 
  3775. File: as.info,  Node: Octa,  Next: Org,  Prev: Nolist,  Up: Pseudo Ops
  3776.  
  3777. 7.65 `.octa BIGNUMS'
  3778. ====================
  3779.  
  3780. This directive expects zero or more bignums, separated by commas.  For
  3781. each bignum, it emits a 16-byte integer.
  3782.  
  3783.    The term "octa" comes from contexts in which a "word" is two bytes;
  3784. hence _octa_-word for 16 bytes.
  3785.  
  3786. 
  3787. File: as.info,  Node: Org,  Next: P2align,  Prev: Octa,  Up: Pseudo Ops
  3788.  
  3789. 7.66 `.org NEW-LC , FILL'
  3790. =========================
  3791.  
  3792. Advance the location counter of the current section to NEW-LC.  NEW-LC
  3793. is either an absolute expression or an expression with the same section
  3794. as the current subsection.  That is, you can't use `.org' to cross
  3795. sections: if NEW-LC has the wrong section, the `.org' directive is
  3796. ignored.  To be compatible with former assemblers, if the section of
  3797. NEW-LC is absolute, `as' issues a warning, then pretends the section of
  3798. NEW-LC is the same as the current subsection.
  3799.  
  3800.    `.org' may only increase the location counter, or leave it
  3801. unchanged; you cannot use `.org' to move the location counter backwards.
  3802.  
  3803.    Because `as' tries to assemble programs in one pass, NEW-LC may not
  3804. be undefined.  If you really detest this restriction we eagerly await a
  3805. chance to share your improved assembler.
  3806.  
  3807.    Beware that the origin is relative to the start of the section, not
  3808. to the start of the subsection.  This is compatible with other people's
  3809. assemblers.
  3810.  
  3811.    When the location counter (of the current subsection) is advanced,
  3812. the intervening bytes are filled with FILL which should be an absolute
  3813. expression.  If the comma and FILL are omitted, FILL defaults to zero.
  3814.  
  3815. 
  3816. File: as.info,  Node: P2align,  Next: PopSection,  Prev: Org,  Up: Pseudo Ops
  3817.  
  3818. 7.67 `.p2align[wl] ABS-EXPR, ABS-EXPR, ABS-EXPR'
  3819. ================================================
  3820.  
  3821. Pad the location counter (in the current subsection) to a particular
  3822. storage boundary.  The first expression (which must be absolute) is the
  3823. number of low-order zero bits the location counter must have after
  3824. advancement.  For example `.p2align 3' advances the location counter
  3825. until it a multiple of 8.  If the location counter is already a
  3826. multiple of 8, no change is needed.
  3827.  
  3828.    The second expression (also absolute) gives the fill value to be
  3829. stored in the padding bytes.  It (and the comma) may be omitted.  If it
  3830. is omitted, the padding bytes are normally zero.  However, on some
  3831. systems, if the section is marked as containing code and the fill value
  3832. is omitted, the space is filled with no-op instructions.
  3833.  
  3834.    The third expression is also absolute, and is also optional.  If it
  3835. is present, it is the maximum number of bytes that should be skipped by
  3836. this alignment directive.  If doing the alignment would require
  3837. skipping more bytes than the specified maximum, then the alignment is
  3838. not done at all.  You can omit the fill value (the second argument)
  3839. entirely by simply using two commas after the required alignment; this
  3840. can be useful if you want the alignment to be filled with no-op
  3841. instructions when appropriate.
  3842.  
  3843.    The `.p2alignw' and `.p2alignl' directives are variants of the
  3844. `.p2align' directive.  The `.p2alignw' directive treats the fill
  3845. pattern as a two byte word value.  The `.p2alignl' directives treats the
  3846. fill pattern as a four byte longword value.  For example, `.p2alignw
  3847. 2,0x368d' will align to a multiple of 4.  If it skips two bytes, they
  3848. will be filled in with the value 0x368d (the exact placement of the
  3849. bytes depends upon the endianness of the processor).  If it skips 1 or
  3850. 3 bytes, the fill value is undefined.
  3851.  
  3852. 
  3853. File: as.info,  Node: Previous,  Next: Print,  Prev: PopSection,  Up: Pseudo Ops
  3854.  
  3855. 7.68 `.previous'
  3856. ================
  3857.  
  3858. This is one of the ELF section stack manipulation directives.  The
  3859. others are `.section' (*note Section::), `.subsection' (*note
  3860. SubSection::), `.pushsection' (*note PushSection::), and `.popsection'
  3861. (*note PopSection::).
  3862.  
  3863.    This directive swaps the current section (and subsection) with most
  3864. recently referenced section (and subsection) prior to this one.
  3865. Multiple `.previous' directives in a row will flip between two sections
  3866. (and their subsections).
  3867.  
  3868.    In terms of the section stack, this directive swaps the current
  3869. section with the top section on the section stack.
  3870.  
  3871. 
  3872. File: as.info,  Node: PopSection,  Next: Previous,  Prev: P2align,  Up: Pseudo Ops
  3873.  
  3874. 7.69 `.popsection'
  3875. ==================
  3876.  
  3877. This is one of the ELF section stack manipulation directives.  The
  3878. others are `.section' (*note Section::), `.subsection' (*note
  3879. SubSection::), `.pushsection' (*note PushSection::), and `.previous'
  3880. (*note Previous::).
  3881.  
  3882.    This directive replaces the current section (and subsection) with
  3883. the top section (and subsection) on the section stack.  This section is
  3884. popped off the stack.
  3885.  
  3886. 
  3887. File: as.info,  Node: Print,  Next: Protected,  Prev: Previous,  Up: Pseudo Ops
  3888.  
  3889. 7.70 `.print STRING'
  3890. ====================
  3891.  
  3892. `as' will print STRING on the standard output during assembly.  You
  3893. must put STRING in double quotes.
  3894.  
  3895. 
  3896. File: as.info,  Node: Protected,  Next: Psize,  Prev: Print,  Up: Pseudo Ops
  3897.  
  3898. 7.71 `.protected NAMES'
  3899. =======================
  3900.  
  3901. This is one of the ELF visibility directives.  The other two are
  3902. `.hidden' (*note Hidden::) and `.internal' (*note Internal::).
  3903.  
  3904.    This directive overrides the named symbols default visibility (which
  3905. is set by their binding: local, global or weak).  The directive sets
  3906. the visibility to `protected' which means that any references to the
  3907. symbols from within the components that defines them must be resolved
  3908. to the definition in that component, even if a definition in another
  3909. component would normally preempt this.
  3910.  
  3911. 
  3912. File: as.info,  Node: Psize,  Next: Purgem,  Prev: Protected,  Up: Pseudo Ops
  3913.  
  3914. 7.72 `.psize LINES , COLUMNS'
  3915. =============================
  3916.  
  3917. Use this directive to declare the number of lines--and, optionally, the
  3918. number of columns--to use for each page, when generating listings.
  3919.  
  3920.    If you do not use `.psize', listings use a default line-count of 60.
  3921. You may omit the comma and COLUMNS specification; the default width is
  3922. 200 columns.
  3923.  
  3924.    `as' generates formfeeds whenever the specified number of lines is
  3925. exceeded (or whenever you explicitly request one, using `.eject').
  3926.  
  3927.    If you specify LINES as `0', no formfeeds are generated save those
  3928. explicitly specified with `.eject'.
  3929.  
  3930. 
  3931. File: as.info,  Node: Purgem,  Next: PushSection,  Prev: Psize,  Up: Pseudo Ops
  3932.  
  3933. 7.73 `.purgem NAME'
  3934. ===================
  3935.  
  3936. Undefine the macro NAME, so that later uses of the string will not be
  3937. expanded.  *Note Macro::.
  3938.  
  3939. 
  3940. File: as.info,  Node: PushSection,  Next: Quad,  Prev: Purgem,  Up: Pseudo Ops
  3941.  
  3942. 7.74 `.pushsection NAME , SUBSECTION'
  3943. =====================================
  3944.  
  3945. This is one of the ELF section stack manipulation directives.  The
  3946. others are `.section' (*note Section::), `.subsection' (*note
  3947. SubSection::), `.popsection' (*note PopSection::), and `.previous'
  3948. (*note Previous::).
  3949.  
  3950.    This directive pushes the current section (and subsection) onto the
  3951. top of the section stack, and then replaces the current section and
  3952. subsection with `name' and `subsection'.
  3953.  
  3954. 
  3955. File: as.info,  Node: Quad,  Next: Rept,  Prev: PushSection,  Up: Pseudo Ops
  3956.  
  3957. 7.75 `.quad BIGNUMS'
  3958. ====================
  3959.  
  3960. `.quad' expects zero or more bignums, separated by commas.  For each
  3961. bignum, it emits an 8-byte integer.  If the bignum won't fit in 8
  3962. bytes, it prints a warning message; and just takes the lowest order 8
  3963. bytes of the bignum.  
  3964.  
  3965.    The term "quad" comes from contexts in which a "word" is two bytes;
  3966. hence _quad_-word for 8 bytes.
  3967.  
  3968. 
  3969. File: as.info,  Node: Rept,  Next: Sbttl,  Prev: Quad,  Up: Pseudo Ops
  3970.  
  3971. 7.76 `.rept COUNT'
  3972. ==================
  3973.  
  3974. Repeat the sequence of lines between the `.rept' directive and the next
  3975. `.endr' directive COUNT times.
  3976.  
  3977.    For example, assembling
  3978.  
  3979.              .rept   3
  3980.              .long   0
  3981.              .endr
  3982.  
  3983.    is equivalent to assembling
  3984.  
  3985.              .long   0
  3986.              .long   0
  3987.              .long   0
  3988.  
  3989. 
  3990. File: as.info,  Node: Sbttl,  Next: Scl,  Prev: Rept,  Up: Pseudo Ops
  3991.  
  3992. 7.77 `.sbttl "SUBHEADING"'
  3993. ==========================
  3994.  
  3995. Use SUBHEADING as the title (third line, immediately after the title
  3996. line) when generating assembly listings.
  3997.  
  3998.    This directive affects subsequent pages, as well as the current page
  3999. if it appears within ten lines of the top of a page.
  4000.  
  4001. 
  4002. File: as.info,  Node: Scl,  Next: Section,  Prev: Sbttl,  Up: Pseudo Ops
  4003.  
  4004. 7.78 `.scl CLASS'
  4005. =================
  4006.  
  4007. Set the storage-class value for a symbol.  This directive may only be
  4008. used inside a `.def'/`.endef' pair.  Storage class may flag whether a
  4009. symbol is static or external, or it may record further symbolic
  4010. debugging information.
  4011.  
  4012.    The `.scl' directive is primarily associated with COFF output; when
  4013. configured to generate `b.out' output format, `as' accepts this
  4014. directive but ignores it.
  4015.  
  4016. 
  4017. File: as.info,  Node: Section,  Next: Set,  Prev: Scl,  Up: Pseudo Ops
  4018.  
  4019. 7.79 `.section NAME'
  4020. ====================
  4021.  
  4022. Use the `.section' directive to assemble the following code into a
  4023. section named NAME.
  4024.  
  4025.    This directive is only supported for targets that actually support
  4026. arbitrarily named sections; on `a.out' targets, for example, it is not
  4027. accepted, even with a standard `a.out' section name.
  4028.  
  4029. COFF Version
  4030. ------------
  4031.  
  4032.    For COFF targets, the `.section' directive is used in one of the
  4033. following ways:
  4034.  
  4035.      .section NAME[, "FLAGS"]
  4036.      .section NAME[, SUBSEGMENT]
  4037.  
  4038.    If the optional argument is quoted, it is taken as flags to use for
  4039. the section.  Each flag is a single character.  The following flags are
  4040. recognized:
  4041. `b'
  4042.      bss section (uninitialized data)
  4043.  
  4044. `n'
  4045.      section is not loaded
  4046.  
  4047. `w'
  4048.      writable section
  4049.  
  4050. `d'
  4051.      data section
  4052.  
  4053. `r'
  4054.      read-only section
  4055.  
  4056. `x'
  4057.      executable section
  4058.  
  4059. `s'
  4060.      shared section (meaningful for PE targets)
  4061.  
  4062. `a'
  4063.      ignored.  (For compatibility with the ELF version)
  4064.  
  4065.    If no flags are specified, the default flags depend upon the section
  4066. name.  If the section name is not recognized, the default will be for
  4067. the section to be loaded and writable.  Note the `n' and `w' flags
  4068. remove attributes from the section, rather than adding them, so if they
  4069. are used on their own it will be as if no flags had been specified at
  4070. all.
  4071.  
  4072.    If the optional argument to the `.section' directive is not quoted,
  4073. it is taken as a subsegment number (*note Sub-Sections::).
  4074.  
  4075. ELF Version
  4076. -----------
  4077.  
  4078.    This is one of the ELF section stack manipulation directives.  The
  4079. others are `.subsection' (*note SubSection::), `.pushsection' (*note
  4080. PushSection::), `.popsection' (*note PopSection::), and `.previous'
  4081. (*note Previous::).
  4082.  
  4083.    For ELF targets, the `.section' directive is used like this:
  4084.  
  4085.      .section NAME [, "FLAGS"[, @TYPE[,FLAG_SPECIFIC_ARGUMENTS]]
  4086.  
  4087.    The optional FLAGS argument is a quoted string which may contain any
  4088. combination of the following characters:
  4089. `a'
  4090.      section is allocatable
  4091.  
  4092. `w'
  4093.      section is writable
  4094.  
  4095. `x'
  4096.      section is executable
  4097.  
  4098. `M'
  4099.      section is mergeable
  4100.  
  4101. `S'
  4102.      section contains zero terminated strings
  4103.  
  4104. `G'
  4105.      section is a member of a section group
  4106.  
  4107. `T'
  4108.      section is used for thread-local-storage
  4109.  
  4110.    The optional TYPE argument may contain one of the following
  4111. constants:
  4112. `@progbits'
  4113.      section contains data
  4114.  
  4115. `@nobits'
  4116.      section does not contain data (i.e., section only occupies space)
  4117.  
  4118. `@note'
  4119.      section contains data which is used by things other than the
  4120.      program
  4121.  
  4122. `@init_array'
  4123.      section contains an array of pointers to init functions
  4124.  
  4125. `@fini_array'
  4126.      section contains an array of pointers to finish functions
  4127.  
  4128. `@preinit_array'
  4129.      section contains an array of pointers to pre-init functions
  4130.  
  4131.    Many targets only support the first three section types.
  4132.  
  4133.    Note on targets where the `@' character is the start of a comment (eg
  4134. ARM) then another character is used instead.  For example the ARM port
  4135. uses the `%' character.
  4136.  
  4137.    If FLAGS contains the `M' symbol then the TYPE argument must be
  4138. specified as well as an extra argument - ENTSIZE - like this:
  4139.  
  4140.      .section NAME , "FLAGS"M, @TYPE, ENTSIZE
  4141.  
  4142.    Sections with the `M' flag but not `S' flag must contain fixed size
  4143. constants, each ENTSIZE octets long. Sections with both `M' and `S'
  4144. must contain zero terminated strings where each character is ENTSIZE
  4145. bytes long. The linker may remove duplicates within sections with the
  4146. same name, same entity size and same flags.  ENTSIZE must be an
  4147. absolute expression.
  4148.  
  4149.    If FLAGS contains the `G' symbol then the TYPE argument must be
  4150. present along with an additional field like this:
  4151.  
  4152.      .section NAME , "FLAGS"G, @TYPE, GROUPNAME[, LINKAGE]
  4153.  
  4154.    The GROUPNAME field specifies the name of the section group to which
  4155. this particular section belongs.  The optional linkage field can
  4156. contain:
  4157. `comdat'
  4158.      indicates that only one copy of this section should be retained
  4159.  
  4160. `.gnu.linkonce'
  4161.      an alias for comdat
  4162.  
  4163.    Note - if both the M and G flags are present then the fields for the
  4164. Merge flag should come first, like this:
  4165.  
  4166.      .section NAME , "FLAGS"MG, @TYPE, ENTSIZE, GROUPNAME[, LINKAGE]
  4167.  
  4168.    If no flags are specified, the default flags depend upon the section
  4169. name.  If the section name is not recognized, the default will be for
  4170. the section to have none of the above flags: it will not be allocated
  4171. in memory, nor writable, nor executable.  The section will contain data.
  4172.  
  4173.    For ELF targets, the assembler supports another type of `.section'
  4174. directive for compatibility with the Solaris assembler:
  4175.  
  4176.      .section "NAME"[, FLAGS...]
  4177.  
  4178.    Note that the section name is quoted.  There may be a sequence of
  4179. comma separated flags:
  4180. `#alloc'
  4181.      section is allocatable
  4182.  
  4183. `#write'
  4184.      section is writable
  4185.  
  4186. `#execinstr'
  4187.      section is executable
  4188.  
  4189. `#tls'
  4190.      section is used for thread local storage
  4191.  
  4192.    This directive replaces the current section and subsection.  See the
  4193. contents of the gas testsuite directory `gas/testsuite/gas/elf' for
  4194. some examples of how this directive and the other section stack
  4195. directives work.
  4196.  
  4197. 
  4198. File: as.info,  Node: Set,  Next: Short,  Prev: Section,  Up: Pseudo Ops
  4199.  
  4200. 7.80 `.set SYMBOL, EXPRESSION'
  4201. ==============================
  4202.  
  4203. Set the value of SYMBOL to EXPRESSION.  This changes SYMBOL's value and
  4204. type to conform to EXPRESSION.  If SYMBOL was flagged as external, it
  4205. remains flagged (*note Symbol Attributes::).
  4206.  
  4207.    You may `.set' a symbol many times in the same assembly.
  4208.  
  4209.    If you `.set' a global symbol, the value stored in the object file
  4210. is the last value stored into it.
  4211.  
  4212.    The syntax for `set' on the HPPA is `SYMBOL .set EXPRESSION'.
  4213.  
  4214. 
  4215. File: as.info,  Node: Short,  Next: Single,  Prev: Set,  Up: Pseudo Ops
  4216.  
  4217. 7.81 `.short EXPRESSIONS'
  4218. =========================
  4219.  
  4220. `.short' is normally the same as `.word'.  *Note `.word': Word.
  4221.  
  4222.    In some configurations, however, `.short' and `.word' generate
  4223. numbers of different lengths; *note Machine Dependencies::.
  4224.  
  4225. 
  4226. File: as.info,  Node: Single,  Next: Size,  Prev: Short,  Up: Pseudo Ops
  4227.  
  4228. 7.82 `.single FLONUMS'
  4229. ======================
  4230.  
  4231. This directive assembles zero or more flonums, separated by commas.  It
  4232. has the same effect as `.float'.  The exact kind of floating point
  4233. numbers emitted depends on how `as' is configured.  *Note Machine
  4234. Dependencies::.
  4235.  
  4236. 
  4237. File: as.info,  Node: Size,  Next: Skip,  Prev: Single,  Up: Pseudo Ops
  4238.  
  4239. 7.83 `.size'
  4240. ============
  4241.  
  4242. This directive is used to set the size associated with a symbol.
  4243.  
  4244. COFF Version
  4245. ------------
  4246.  
  4247.    For COFF targets, the `.size' directive is only permitted inside
  4248. `.def'/`.endef' pairs.  It is used like this:
  4249.  
  4250.      .size EXPRESSION
  4251.  
  4252.    `.size' is only meaningful when generating COFF format output; when
  4253. `as' is generating `b.out', it accepts this directive but ignores it.
  4254.  
  4255. ELF Version
  4256. -----------
  4257.  
  4258.    For ELF targets, the `.size' directive is used like this:
  4259.  
  4260.      .size NAME , EXPRESSION
  4261.  
  4262.    This directive sets the size associated with a symbol NAME.  The
  4263. size in bytes is computed from EXPRESSION which can make use of label
  4264. arithmetic.  This directive is typically used to set the size of
  4265. function symbols.
  4266.  
  4267. 
  4268. File: as.info,  Node: Sleb128,  Next: Space,  Prev: Skip,  Up: Pseudo Ops
  4269.  
  4270. 7.84 `.sleb128 EXPRESSIONS'
  4271. ===========================
  4272.  
  4273. SLEB128 stands for "signed little endian base 128."  This is a compact,
  4274. variable length representation of numbers used by the DWARF symbolic
  4275. debugging format.  *Note `.uleb128': Uleb128.
  4276.  
  4277. 
  4278. File: as.info,  Node: Skip,  Next: Sleb128,  Prev: Size,  Up: Pseudo Ops
  4279.  
  4280. 7.85 `.skip SIZE , FILL'
  4281. ========================
  4282.  
  4283. This directive emits SIZE bytes, each of value FILL.  Both SIZE and
  4284. FILL are absolute expressions.  If the comma and FILL are omitted, FILL
  4285. is assumed to be zero.  This is the same as `.space'.
  4286.  
  4287. 
  4288. File: as.info,  Node: Space,  Next: Stab,  Prev: Sleb128,  Up: Pseudo Ops
  4289.  
  4290. 7.86 `.space SIZE , FILL'
  4291. =========================
  4292.  
  4293. This directive emits SIZE bytes, each of value FILL.  Both SIZE and
  4294. FILL are absolute expressions.  If the comma and FILL are omitted, FILL
  4295. is assumed to be zero.  This is the same as `.skip'.
  4296.  
  4297.      _Warning:_ `.space' has a completely different meaning for HPPA
  4298.      targets; use `.block' as a substitute.  See `HP9000 Series 800
  4299.      Assembly Language Reference Manual' (HP 92432-90001) for the
  4300.      meaning of the `.space' directive.  *Note HPPA Assembler
  4301.      Directives: HPPA Directives, for a summary.
  4302.  
  4303.    On the AMD 29K, this directive is ignored; it is accepted for
  4304. compatibility with other AMD 29K assemblers.
  4305.  
  4306.      _Warning:_ In most versions of the GNU assembler, the directive
  4307.      `.space' has the effect of `.block'  *Note Machine Dependencies::.
  4308.  
  4309. 
  4310. File: as.info,  Node: Stab,  Next: String,  Prev: Space,  Up: Pseudo Ops
  4311.  
  4312. 7.87 `.stabd, .stabn, .stabs'
  4313. =============================
  4314.  
  4315. There are three directives that begin `.stab'.  All emit symbols (*note
  4316. Symbols::), for use by symbolic debuggers.  The symbols are not entered
  4317. in the `as' hash table: they cannot be referenced elsewhere in the
  4318. source file.  Up to five fields are required:
  4319.  
  4320. STRING
  4321.      This is the symbol's name.  It may contain any character except
  4322.      `\000', so is more general than ordinary symbol names.  Some
  4323.      debuggers used to code arbitrarily complex structures into symbol
  4324.      names using this field.
  4325.  
  4326. TYPE
  4327.      An absolute expression.  The symbol's type is set to the low 8
  4328.      bits of this expression.  Any bit pattern is permitted, but `ld'
  4329.      and debuggers choke on silly bit patterns.
  4330.  
  4331. OTHER
  4332.      An absolute expression.  The symbol's "other" attribute is set to
  4333.      the low 8 bits of this expression.
  4334.  
  4335. DESC
  4336.      An absolute expression.  The symbol's descriptor is set to the low
  4337.      16 bits of this expression.
  4338.  
  4339. VALUE
  4340.      An absolute expression which becomes the symbol's value.
  4341.  
  4342.    If a warning is detected while reading a `.stabd', `.stabn', or
  4343. `.stabs' statement, the symbol has probably already been created; you
  4344. get a half-formed symbol in your object file.  This is compatible with
  4345. earlier assemblers!
  4346.  
  4347. `.stabd TYPE , OTHER , DESC'
  4348.      The "name" of the symbol generated is not even an empty string.
  4349.      It is a null pointer, for compatibility.  Older assemblers used a
  4350.      null pointer so they didn't waste space in object files with empty
  4351.      strings.
  4352.  
  4353.      The symbol's value is set to the location counter, relocatably.
  4354.      When your program is linked, the value of this symbol is the
  4355.      address of the location counter when the `.stabd' was assembled.
  4356.  
  4357. `.stabn TYPE , OTHER , DESC , VALUE'
  4358.      The name of the symbol is set to the empty string `""'.
  4359.  
  4360. `.stabs STRING ,  TYPE , OTHER , DESC , VALUE'
  4361.      All five fields are specified.
  4362.  
  4363. 
  4364. File: as.info,  Node: String,  Next: Struct,  Prev: Stab,  Up: Pseudo Ops
  4365.  
  4366. 7.88 `.string' "STR"
  4367. ====================
  4368.  
  4369. Copy the characters in STR to the object file.  You may specify more
  4370. than one string to copy, separated by commas.  Unless otherwise
  4371. specified for a particular machine, the assembler marks the end of each
  4372. string with a 0 byte.  You can use any of the escape sequences
  4373. described in *Note Strings: Strings.
  4374.  
  4375. 
  4376. File: as.info,  Node: Struct,  Next: SubSection,  Prev: String,  Up: Pseudo Ops
  4377.  
  4378. 7.89 `.struct EXPRESSION'
  4379. =========================
  4380.  
  4381. Switch to the absolute section, and set the section offset to
  4382. EXPRESSION, which must be an absolute expression.  You might use this
  4383. as follows:
  4384.              .struct 0
  4385.      field1:
  4386.              .struct field1 + 4
  4387.      field2:
  4388.              .struct field2 + 4
  4389.      field3:
  4390.    This would define the symbol `field1' to have the value 0, the symbol
  4391. `field2' to have the value 4, and the symbol `field3' to have the value
  4392. 8.  Assembly would be left in the absolute section, and you would need
  4393. to use a `.section' directive of some sort to change to some other
  4394. section before further assembly.
  4395.  
  4396. 
  4397. File: as.info,  Node: SubSection,  Next: Symver,  Prev: Struct,  Up: Pseudo Ops
  4398.  
  4399. 7.90 `.subsection NAME'
  4400. =======================
  4401.  
  4402. This is one of the ELF section stack manipulation directives.  The
  4403. others are `.section' (*note Section::), `.pushsection' (*note
  4404. PushSection::), `.popsection' (*note PopSection::), and `.previous'
  4405. (*note Previous::).
  4406.  
  4407.    This directive replaces the current subsection with `name'.  The
  4408. current section is not changed.  The replaced subsection is put onto
  4409. the section stack in place of the then current top of stack subsection.
  4410.  
  4411. 
  4412. File: as.info,  Node: Symver,  Next: Tag,  Prev: SubSection,  Up: Pseudo Ops
  4413.  
  4414. 7.91 `.symver'
  4415. ==============
  4416.  
  4417. Use the `.symver' directive to bind symbols to specific version nodes
  4418. within a source file.  This is only supported on ELF platforms, and is
  4419. typically used when assembling files to be linked into a shared library.
  4420. There are cases where it may make sense to use this in objects to be
  4421. bound into an application itself so as to override a versioned symbol
  4422. from a shared library.
  4423.  
  4424.    For ELF targets, the `.symver' directive can be used like this:
  4425.      .symver NAME, NAME2@NODENAME
  4426.    If the symbol NAME is defined within the file being assembled, the
  4427. `.symver' directive effectively creates a symbol alias with the name
  4428. NAME2@NODENAME, and in fact the main reason that we just don't try and
  4429. create a regular alias is that the @ character isn't permitted in
  4430. symbol names.  The NAME2 part of the name is the actual name of the
  4431. symbol by which it will be externally referenced.  The name NAME itself
  4432. is merely a name of convenience that is used so that it is possible to
  4433. have definitions for multiple versions of a function within a single
  4434. source file, and so that the compiler can unambiguously know which
  4435. version of a function is being mentioned.  The NODENAME portion of the
  4436. alias should be the name of a node specified in the version script
  4437. supplied to the linker when building a shared library.  If you are
  4438. attempting to override a versioned symbol from a shared library, then
  4439. NODENAME should correspond to the nodename of the symbol you are trying
  4440. to override.
  4441.  
  4442.    If the symbol NAME is not defined within the file being assembled,
  4443. all references to NAME will be changed to NAME2@NODENAME.  If no
  4444. reference to NAME is made, NAME2@NODENAME will be removed from the
  4445. symbol table.
  4446.  
  4447.    Another usage of the `.symver' directive is:
  4448.      .symver NAME, NAME2@@NODENAME
  4449.    In this case, the symbol NAME must exist and be defined within the
  4450. file being assembled. It is similar to NAME2@NODENAME. The difference
  4451. is NAME2@@NODENAME will also be used to resolve references to NAME2 by
  4452. the linker.
  4453.  
  4454.    The third usage of the `.symver' directive is:
  4455.      .symver NAME, NAME2@@@NODENAME
  4456.    When NAME is not defined within the file being assembled, it is
  4457. treated as NAME2@NODENAME. When NAME is defined within the file being
  4458. assembled, the symbol name, NAME, will be changed to NAME2@@NODENAME.
  4459.  
  4460. 
  4461. File: as.info,  Node: Tag,  Next: Text,  Prev: Symver,  Up: Pseudo Ops
  4462.  
  4463. 7.92 `.tag STRUCTNAME'
  4464. ======================
  4465.  
  4466. This directive is generated by compilers to include auxiliary debugging
  4467. information in the symbol table.  It is only permitted inside
  4468. `.def'/`.endef' pairs.  Tags are used to link structure definitions in
  4469. the symbol table with instances of those structures.
  4470.  
  4471.    `.tag' is only used when generating COFF format output; when `as' is
  4472. generating `b.out', it accepts this directive but ignores it.
  4473.  
  4474. 
  4475. File: as.info,  Node: Text,  Next: Title,  Prev: Tag,  Up: Pseudo Ops
  4476.  
  4477. 7.93 `.text SUBSECTION'
  4478. =======================
  4479.  
  4480. Tells `as' to assemble the following statements onto the end of the
  4481. text subsection numbered SUBSECTION, which is an absolute expression.
  4482. If SUBSECTION is omitted, subsection number zero is used.
  4483.  
  4484. 
  4485. File: as.info,  Node: Title,  Next: Type,  Prev: Text,  Up: Pseudo Ops
  4486.  
  4487. 7.94 `.title "HEADING"'
  4488. =======================
  4489.  
  4490. Use HEADING as the title (second line, immediately after the source
  4491. file name and pagenumber) when generating assembly listings.
  4492.  
  4493.    This directive affects subsequent pages, as well as the current page
  4494. if it appears within ten lines of the top of a page.
  4495.  
  4496. 
  4497. File: as.info,  Node: Type,  Next: Uleb128,  Prev: Title,  Up: Pseudo Ops
  4498.  
  4499. 7.95 `.type'
  4500. ============
  4501.  
  4502. This directive is used to set the type of a symbol.
  4503.  
  4504. COFF Version
  4505. ------------
  4506.  
  4507.    For COFF targets, this directive is permitted only within
  4508. `.def'/`.endef' pairs.  It is used like this:
  4509.  
  4510.      .type INT
  4511.  
  4512.    This records the integer INT as the type attribute of a symbol table
  4513. entry.
  4514.  
  4515.    `.type' is associated only with COFF format output; when `as' is
  4516. configured for `b.out' output, it accepts this directive but ignores it.
  4517.  
  4518. ELF Version
  4519. -----------
  4520.  
  4521.    For ELF targets, the `.type' directive is used like this:
  4522.  
  4523.      .type NAME , TYPE DESCRIPTION
  4524.  
  4525.    This sets the type of symbol NAME to be either a function symbol or
  4526. an object symbol.  There are five different syntaxes supported for the
  4527. TYPE DESCRIPTION field, in order to provide compatibility with various
  4528. other assemblers.  The syntaxes supported are:
  4529.  
  4530.        .type <name>,#function
  4531.        .type <name>,#object
  4532.  
  4533.        .type <name>,@function
  4534.        .type <name>,@object
  4535.  
  4536.        .type <name>,%function
  4537.        .type <name>,%object
  4538.  
  4539.        .type <name>,"function"
  4540.        .type <name>,"object"
  4541.  
  4542.        .type <name> STT_FUNCTION
  4543.        .type <name> STT_OBJECT
  4544.  
  4545. 
  4546. File: as.info,  Node: Uleb128,  Next: Val,  Prev: Type,  Up: Pseudo Ops
  4547.  
  4548. 7.96 `.uleb128 EXPRESSIONS'
  4549. ===========================
  4550.  
  4551. ULEB128 stands for "unsigned little endian base 128."  This is a
  4552. compact, variable length representation of numbers used by the DWARF
  4553. symbolic debugging format.  *Note `.sleb128': Sleb128.
  4554.  
  4555. 
  4556. File: as.info,  Node: Val,  Next: Version,  Prev: Uleb128,  Up: Pseudo Ops
  4557.  
  4558. 7.97 `.val ADDR'
  4559. ================
  4560.  
  4561. This directive, permitted only within `.def'/`.endef' pairs, records
  4562. the address ADDR as the value attribute of a symbol table entry.
  4563.  
  4564.    `.val' is used only for COFF output; when `as' is configured for
  4565. `b.out', it accepts this directive but ignores it.
  4566.  
  4567. 
  4568. File: as.info,  Node: Version,  Next: VTableEntry,  Prev: Val,  Up: Pseudo Ops
  4569.  
  4570. 7.98 `.version "STRING"'
  4571. ========================
  4572.  
  4573. This directive creates a `.note' section and places into it an ELF
  4574. formatted note of type NT_VERSION.  The note's name is set to `string'.
  4575.  
  4576. 
  4577. File: as.info,  Node: VTableEntry,  Next: VTableInherit,  Prev: Version,  Up: Pseudo Ops
  4578.  
  4579. 7.99 `.vtable_entry TABLE, OFFSET'
  4580. ==================================
  4581.  
  4582. This directive finds or creates a symbol `table' and creates a
  4583. `VTABLE_ENTRY' relocation for it with an addend of `offset'.
  4584.  
  4585. 
  4586. File: as.info,  Node: VTableInherit,  Next: Warning,  Prev: VTableEntry,  Up: Pseudo Ops
  4587.  
  4588. 7.100 `.vtable_inherit CHILD, PARENT'
  4589. =====================================
  4590.  
  4591. This directive finds the symbol `child' and finds or creates the symbol
  4592. `parent' and then creates a `VTABLE_INHERIT' relocation for the parent
  4593. whose addend is the value of the child symbol.  As a special case the
  4594. parent name of `0' is treated as refering the `*ABS*' section.
  4595.  
  4596. 
  4597. File: as.info,  Node: Warning,  Next: Weak,  Prev: VTableInherit,  Up: Pseudo Ops
  4598.  
  4599. 7.101 `.warning "STRING"'
  4600. =========================
  4601.  
  4602. Similar to the directive `.error' (*note `.error "STRING"': Error.),
  4603. but just emits a warning.
  4604.  
  4605. 
  4606. File: as.info,  Node: Weak,  Next: Word,  Prev: Warning,  Up: Pseudo Ops
  4607.  
  4608. 7.102 `.weak NAMES'
  4609. ===================
  4610.  
  4611. This directive sets the weak attribute on the comma separated list of
  4612. symbol `names'.  If the symbols do not already exist, they will be
  4613. created.
  4614.  
  4615.    On COFF targets other than PE, weak symbols are a GNU extension.
  4616. This directive sets the weak attribute on the comma separated list of
  4617. symbol `names'.  If the symbols do not already exist, they will be
  4618. created.
  4619.  
  4620.    On the PE target, weak symbols are supported natively as weak
  4621. aliases.  When a weak symbol is created that is not an alias, GAS
  4622. creates an alternate symbol to hold the default value.
  4623.  
  4624. 
  4625. File: as.info,  Node: Word,  Next: Deprecated,  Prev: Weak,  Up: Pseudo Ops
  4626.  
  4627. 7.103 `.word EXPRESSIONS'
  4628. =========================
  4629.  
  4630. This directive expects zero or more EXPRESSIONS, of any section,
  4631. separated by commas.
  4632.  
  4633.    The size of the number emitted, and its byte order, depend on what
  4634. target computer the assembly is for.
  4635.  
  4636.      _Warning: Special Treatment to support Compilers_
  4637.  
  4638.    Machines with a 32-bit address space, but that do less than 32-bit
  4639. addressing, require the following special treatment.  If the machine of
  4640. interest to you does 32-bit addressing (or doesn't require it; *note
  4641. Machine Dependencies::), you can ignore this issue.
  4642.  
  4643.    In order to assemble compiler output into something that works, `as'
  4644. occasionally does strange things to `.word' directives.  Directives of
  4645. the form `.word sym1-sym2' are often emitted by compilers as part of
  4646. jump tables.  Therefore, when `as' assembles a directive of the form
  4647. `.word sym1-sym2', and the difference between `sym1' and `sym2' does
  4648. not fit in 16 bits, `as' creates a "secondary jump table", immediately
  4649. before the next label.  This secondary jump table is preceded by a
  4650. short-jump to the first byte after the secondary table.  This
  4651. short-jump prevents the flow of control from accidentally falling into
  4652. the new table.  Inside the table is a long-jump to `sym2'.  The
  4653. original `.word' contains `sym1' minus the address of the long-jump to
  4654. `sym2'.
  4655.  
  4656.    If there were several occurrences of `.word sym1-sym2' before the
  4657. secondary jump table, all of them are adjusted.  If there was a `.word
  4658. sym3-sym4', that also did not fit in sixteen bits, a long-jump to
  4659. `sym4' is included in the secondary jump table, and the `.word'
  4660. directives are adjusted to contain `sym3' minus the address of the
  4661. long-jump to `sym4'; and so on, for as many entries in the original
  4662. jump table as necessary.
  4663.  
  4664. 
  4665. File: as.info,  Node: Deprecated,  Prev: Word,  Up: Pseudo Ops
  4666.  
  4667. 7.104 Deprecated Directives
  4668. ===========================
  4669.  
  4670. One day these directives won't work.  They are included for
  4671. compatibility with older assemblers.
  4672. .abort
  4673.  
  4674. .line
  4675.  
  4676. 
  4677. File: as.info,  Node: Machine Dependencies,  Next: Reporting Bugs,  Prev: Pseudo Ops,  Up: Top
  4678.  
  4679. 8 Machine Dependent Features
  4680. ****************************
  4681.  
  4682. The machine instruction sets are (almost by definition) different on
  4683. each machine where `as' runs.  Floating point representations vary as
  4684. well, and `as' often supports a few additional directives or
  4685. command-line options for compatibility with other assemblers on a
  4686. particular platform.  Finally, some versions of `as' support special
  4687. pseudo-instructions for branch optimization.
  4688.  
  4689.    This chapter discusses most of these differences, though it does not
  4690. include details on any machine's instruction set.  For details on that
  4691. subject, see the hardware manufacturer's manual.
  4692.  
  4693. * Menu:
  4694.  
  4695.  
  4696. * AMD29K-Dependent::            AMD 29K Dependent Features
  4697.  
  4698. * Alpha-Dependent::        Alpha Dependent Features
  4699.  
  4700. * ARC-Dependent::               ARC Dependent Features
  4701.  
  4702. * ARM-Dependent::               ARM Dependent Features
  4703.  
  4704. * CRIS-Dependent::              CRIS Dependent Features
  4705.  
  4706. * D10V-Dependent::              D10V Dependent Features
  4707.  
  4708. * D30V-Dependent::              D30V Dependent Features
  4709.  
  4710. * H8/300-Dependent::            Renesas H8/300 Dependent Features
  4711.  
  4712. * H8/500-Dependent::            Renesas H8/500 Dependent Features
  4713.  
  4714. * HPPA-Dependent::              HPPA Dependent Features
  4715.  
  4716. * ESA/390-Dependent::           IBM ESA/390 Dependent Features
  4717.  
  4718. * i386-Dependent::              Intel 80386 and AMD x86-64 Dependent Features
  4719.  
  4720. * i860-Dependent::              Intel 80860 Dependent Features
  4721.  
  4722. * i960-Dependent::              Intel 80960 Dependent Features
  4723.  
  4724. * IA-64-Dependent::             Intel IA-64 Dependent Features
  4725.  
  4726. * IP2K-Dependent::              IP2K Dependent Features
  4727.  
  4728. * M32R-Dependent::              M32R Dependent Features
  4729.  
  4730. * M68K-Dependent::              M680x0 Dependent Features
  4731.  
  4732. * M68HC11-Dependent::           M68HC11 and 68HC12 Dependent Features
  4733.  
  4734. * M88K-Dependent::        M880x0 Dependent Features
  4735.  
  4736. * MIPS-Dependent::              MIPS Dependent Features
  4737.  
  4738. * MMIX-Dependent::              MMIX Dependent Features
  4739.  
  4740. * MSP430-Dependent::        MSP430 Dependent Features
  4741.  
  4742. * SH-Dependent::                Renesas / SuperH SH Dependent Features
  4743. * SH64-Dependent::              SuperH SH64 Dependent Features
  4744.  
  4745. * PDP-11-Dependent::            PDP-11 Dependent Features
  4746.  
  4747. * PJ-Dependent::                picoJava Dependent Features
  4748.  
  4749. * PPC-Dependent::               PowerPC Dependent Features
  4750.  
  4751. * Sparc-Dependent::             SPARC Dependent Features
  4752.  
  4753. * TIC54X-Dependent::            TI TMS320C54x Dependent Features
  4754.  
  4755. * V850-Dependent::              V850 Dependent Features
  4756.  
  4757. * Xtensa-Dependent::            Xtensa Dependent Features
  4758.  
  4759. * Z8000-Dependent::             Z8000 Dependent Features
  4760.  
  4761. * Vax-Dependent::               VAX Dependent Features
  4762.  
  4763. 
  4764. File: as.info,  Node: AMD29K-Dependent,  Next: Alpha-Dependent,  Up: Machine Dependencies
  4765.  
  4766. 8.1 AMD 29K Dependent Features
  4767. ==============================
  4768.  
  4769. * Menu:
  4770.  
  4771. * AMD29K Options::              Options
  4772. * AMD29K Syntax::               Syntax
  4773. * AMD29K Floating Point::       Floating Point
  4774. * AMD29K Directives::           AMD 29K Machine Directives
  4775. * AMD29K Opcodes::              Opcodes
  4776.  
  4777. 
  4778. File: as.info,  Node: AMD29K Options,  Next: AMD29K Syntax,  Up: AMD29K-Dependent
  4779.  
  4780. 8.1.1 Options
  4781. -------------
  4782.  
  4783. `as' has no additional command-line options for the AMD 29K family.
  4784.  
  4785. 
  4786. File: as.info,  Node: AMD29K Syntax,  Next: AMD29K Floating Point,  Prev: AMD29K Options,  Up: AMD29K-Dependent
  4787.  
  4788. 8.1.2 Syntax
  4789. ------------
  4790.  
  4791. * Menu:
  4792.  
  4793. * AMD29K-Macros::        Macros
  4794. * AMD29K-Chars::                Special Characters
  4795. * AMD29K-Regs::                 Register Names
  4796.  
  4797. 
  4798. File: as.info,  Node: AMD29K-Macros,  Next: AMD29K-Chars,  Up: AMD29K Syntax
  4799.  
  4800. 8.1.2.1 Macros
  4801. ..............
  4802.  
  4803. The macro syntax used on the AMD 29K is like that described in the AMD
  4804. 29K Family Macro Assembler Specification.  Normal `as' macros should
  4805. still work.
  4806.  
  4807. 
  4808. File: as.info,  Node: AMD29K-Chars,  Next: AMD29K-Regs,  Prev: AMD29K-Macros,  Up: AMD29K Syntax
  4809.  
  4810. 8.1.2.2 Special Characters
  4811. ..........................
  4812.  
  4813. `;' is the line comment character.
  4814.  
  4815.    The character `?' is permitted in identifiers (but may not begin an
  4816. identifier).
  4817.  
  4818. 
  4819. File: as.info,  Node: AMD29K-Regs,  Prev: AMD29K-Chars,  Up: AMD29K Syntax
  4820.  
  4821. 8.1.2.3 Register Names
  4822. ......................
  4823.  
  4824. General-purpose registers are represented by predefined symbols of the
  4825. form `GRNNN' (for global registers) or `LRNNN' (for local registers),
  4826. where NNN represents a number between `0' and `127', written with no
  4827. leading zeros.  The leading letters may be in either upper or lower
  4828. case; for example, `gr13' and `LR7' are both valid register names.
  4829.  
  4830.    You may also refer to general-purpose registers by specifying the
  4831. register number as the result of an expression (prefixed with `%%' to
  4832. flag the expression as a register number):
  4833.      %%EXPRESSION
  4834.    --where EXPRESSION must be an absolute expression evaluating to a
  4835. number between `0' and `255'.  The range [0, 127] refers to global
  4836. registers, and the range [128, 255] to local registers.
  4837.  
  4838.    In addition, `as' understands the following protected
  4839. special-purpose register names for the AMD 29K family:
  4840.  
  4841.        vab    chd    pc0
  4842.        ops    chc    pc1
  4843.        cps    rbp    pc2
  4844.        cfg    tmc    mmu
  4845.        cha    tmr    lru
  4846.  
  4847.    These unprotected special-purpose register names are also recognized:
  4848.        ipc    alu    fpe
  4849.        ipa    bp     inte
  4850.        ipb    fc     fps
  4851.        q      cr     exop
  4852.  
  4853. 
  4854. File: as.info,  Node: AMD29K Floating Point,  Next: AMD29K Directives,  Prev: AMD29K Syntax,  Up: AMD29K-Dependent
  4855.  
  4856. 8.1.3 Floating Point
  4857. --------------------
  4858.  
  4859. The AMD 29K family uses IEEE floating-point numbers.
  4860.  
  4861. 
  4862. File: as.info,  Node: AMD29K Directives,  Next: AMD29K Opcodes,  Prev: AMD29K Floating Point,  Up: AMD29K-Dependent
  4863.  
  4864. 8.1.4 AMD 29K Machine Directives
  4865. --------------------------------
  4866.  
  4867. `.block SIZE , FILL'
  4868.      This directive emits SIZE bytes, each of value FILL.  Both SIZE
  4869.      and FILL are absolute expressions.  If the comma and FILL are
  4870.      omitted, FILL is assumed to be zero.
  4871.  
  4872.      In other versions of the GNU assembler, this directive is called
  4873.      `.space'.
  4874.  
  4875. `.cputype'
  4876.      This directive is ignored; it is accepted for compatibility with
  4877.      other AMD 29K assemblers.
  4878.  
  4879. `.file'
  4880.      This directive is ignored; it is accepted for compatibility with
  4881.      other AMD 29K assemblers.
  4882.  
  4883.           _Warning:_ in other versions of the GNU assembler, `.file' is
  4884.           used for the directive called `.app-file' in the AMD 29K
  4885.           support.
  4886.  
  4887. `.line'
  4888.      This directive is ignored; it is accepted for compatibility with
  4889.      other AMD 29K assemblers.
  4890.  
  4891. `.sect'
  4892.      This directive is ignored; it is accepted for compatibility with
  4893.      other AMD 29K assemblers.
  4894.  
  4895. `.use SECTION NAME'
  4896.      Establishes the section and subsection for the following code;
  4897.      SECTION NAME may be one of `.text', `.data', `.data1', or `.lit'.
  4898.      With one of the first three SECTION NAME options, `.use' is
  4899.      equivalent to the machine directive SECTION NAME; the remaining
  4900.      case, `.use .lit', is the same as `.data 200'.
  4901.  
  4902. 
  4903. File: as.info,  Node: AMD29K Opcodes,  Prev: AMD29K Directives,  Up: AMD29K-Dependent
  4904.  
  4905. 8.1.5 Opcodes
  4906. -------------
  4907.  
  4908. `as' implements all the standard AMD 29K opcodes.  No additional
  4909. pseudo-instructions are needed on this family.
  4910.  
  4911.    For information on the 29K machine instruction set, see `Am29000
  4912. User's Manual', Advanced Micro Devices, Inc.
  4913.  
  4914. 
  4915. File: as.info,  Node: Alpha-Dependent,  Next: ARC-Dependent,  Prev: AMD29K-Dependent,  Up: Machine Dependencies
  4916.  
  4917. 8.2 Alpha Dependent Features
  4918. ============================
  4919.  
  4920. * Menu:
  4921.  
  4922. * Alpha Notes::                Notes
  4923. * Alpha Options::              Options
  4924. * Alpha Syntax::               Syntax
  4925. * Alpha Floating Point::       Floating Point
  4926. * Alpha Directives::           Alpha Machine Directives
  4927. * Alpha Opcodes::              Opcodes
  4928.  
  4929. 
  4930. File: as.info,  Node: Alpha Notes,  Next: Alpha Options,  Up: Alpha-Dependent
  4931.  
  4932. 8.2.1 Notes
  4933. -----------
  4934.  
  4935. The documentation here is primarily for the ELF object format.  `as'
  4936. also supports the ECOFF and EVAX formats, but features specific to
  4937. these formats are not yet documented.
  4938.  
  4939. 
  4940. File: as.info,  Node: Alpha Options,  Next: Alpha Syntax,  Prev: Alpha Notes,  Up: Alpha-Dependent
  4941.  
  4942. 8.2.2 Options
  4943. -------------
  4944.  
  4945. `-mCPU'
  4946.      This option specifies the target processor.  If an attempt is made
  4947.      to assemble an instruction which will not execute on the target
  4948.      processor, the assembler may either expand the instruction as a
  4949.      macro or issue an error message.  This option is equivalent to the
  4950.      `.arch' directive.
  4951.  
  4952.      The following processor names are recognized: `21064', `21064a',
  4953.      `21066', `21068', `21164', `21164a', `21164pc', `21264', `21264a',
  4954.      `21264b', `ev4', `ev5', `lca45', `ev5', `ev56', `pca56', `ev6',
  4955.      `ev67', `ev68'.  The special name `all' may be used to allow the
  4956.      assembler to accept instructions valid for any Alpha processor.
  4957.  
  4958.      In order to support existing practice in OSF/1 with respect to
  4959.      `.arch', and existing practice within `MILO' (the Linux ARC
  4960.      bootloader), the numbered processor names (e.g. 21064) enable the
  4961.      processor-specific PALcode instructions, while the
  4962.      "electro-vlasic" names (e.g. `ev4') do not.
  4963.  
  4964. `-mdebug'
  4965. `-no-mdebug'
  4966.      Enables or disables the generation of `.mdebug' encapsulation for
  4967.      stabs directives and procedure descriptors.  The default is to
  4968.      automatically enable `.mdebug' when the first stabs directive is
  4969.      seen.
  4970.  
  4971. `-relax'
  4972.      This option forces all relocations to be put into the object file,
  4973.      instead of saving space and resolving some relocations at assembly
  4974.      time.  Note that this option does not propagate all symbol
  4975.      arithmetic into the object file, because not all symbol arithmetic
  4976.      can be represented.  However, the option can still be useful in
  4977.      specific applications.
  4978.  
  4979. `-g'
  4980.      This option is used when the compiler generates debug information.
  4981.      When `gcc' is using `mips-tfile' to generate debug information
  4982.      for ECOFF, local labels must be passed through to the object file.
  4983.      Otherwise this option has no effect.
  4984.  
  4985. `-GSIZE'
  4986.      A local common symbol larger than SIZE is placed in `.bss', while
  4987.      smaller symbols are placed in `.sbss'.
  4988.  
  4989. `-F'
  4990. `-32addr'
  4991.      These options are ignored for backward compatibility.
  4992.  
  4993. 
  4994. File: as.info,  Node: Alpha Syntax,  Next: Alpha Floating Point,  Prev: Alpha Options,  Up: Alpha-Dependent
  4995.  
  4996. 8.2.3 Syntax
  4997. ------------
  4998.  
  4999. The assembler syntax closely follow the Alpha Reference Manual;
  5000. assembler directives and general syntax closely follow the OSF/1 and
  5001. OpenVMS syntax, with a few differences for ELF.
  5002.  
  5003. * Menu:
  5004.  
  5005. * Alpha-Chars::                Special Characters
  5006. * Alpha-Regs::                 Register Names
  5007. * Alpha-Relocs::               Relocations
  5008.  
  5009. 
  5010. File: as.info,  Node: Alpha-Chars,  Next: Alpha-Regs,  Up: Alpha Syntax
  5011.  
  5012. 8.2.3.1 Special Characters
  5013. ..........................
  5014.  
  5015. `#' is the line comment character.
  5016.  
  5017.    `;' can be used instead of a newline to separate statements.
  5018.  
  5019. 
  5020. File: as.info,  Node: Alpha-Regs,  Next: Alpha-Relocs,  Prev: Alpha-Chars,  Up: Alpha Syntax
  5021.  
  5022. 8.2.3.2 Register Names
  5023. ......................
  5024.  
  5025. The 32 integer registers are referred to as `$N' or `$rN'.  In
  5026. addition, registers 15, 28, 29, and 30 may be referred to by the
  5027. symbols `$fp', `$at', `$gp', and `$sp' respectively.
  5028.  
  5029.    The 32 floating-point registers are referred to as `$fN'.
  5030.  
  5031. 
  5032. File: as.info,  Node: Alpha-Relocs,  Prev: Alpha-Regs,  Up: Alpha Syntax
  5033.  
  5034. 8.2.3.3 Relocations
  5035. ...................
  5036.  
  5037. Some of these relocations are available for ECOFF, but mostly only for
  5038. ELF.  They are modeled after the relocation format introduced in
  5039. Digital Unix 4.0, but there are additions.
  5040.  
  5041.    The format is `!TAG' or `!TAG!NUMBER' where TAG is the name of the
  5042. relocation.  In some cases NUMBER is used to relate specific
  5043. instructions.
  5044.  
  5045.    The relocation is placed at the end of the instruction like so:
  5046.  
  5047.      ldah  $0,a($29)    !gprelhigh
  5048.      lda   $0,a($0)     !gprellow
  5049.      ldq   $1,b($29)    !literal!100
  5050.      ldl   $2,0($1)     !lituse_base!100
  5051.  
  5052. `!literal'
  5053. `!literal!N'
  5054.      Used with an `ldq' instruction to load the address of a symbol
  5055.      from the GOT.
  5056.  
  5057.      A sequence number N is optional, and if present is used to pair
  5058.      `lituse' relocations with this `literal' relocation.  The `lituse'
  5059.      relocations are used by the linker to optimize the code based on
  5060.      the final location of the symbol.
  5061.  
  5062.      Note that these optimizations are dependent on the data flow of the
  5063.      program.  Therefore, if _any_ `lituse' is paired with a `literal'
  5064.      relocation, then _all_ uses of the register set by the `literal'
  5065.      instruction must also be marked with `lituse' relocations.  This
  5066.      is because the original `literal' instruction may be deleted or
  5067.      transformed into another instruction.
  5068.  
  5069.      Also note that there may be a one-to-many relationship between
  5070.      `literal' and `lituse', but not a many-to-one.  That is, if there
  5071.      are two code paths that load up the same address and feed the
  5072.      value to a single use, then the use may not use a `lituse'
  5073.      relocation.
  5074.  
  5075. `!lituse_base!N'
  5076.      Used with any memory format instruction (e.g. `ldl') to indicate
  5077.      that the literal is used for an address load.  The offset field of
  5078.      the instruction must be zero.  During relaxation, the code may be
  5079.      altered to use a gp-relative load.
  5080.  
  5081. `!lituse_jsr!N'
  5082.      Used with a register branch format instruction (e.g. `jsr') to
  5083.      indicate that the literal is used for a call.  During relaxation,
  5084.      the code may be altered to use a direct branch (e.g. `bsr').
  5085.  
  5086. `!lituse_bytoff!N'
  5087.      Used with a byte mask instruction (e.g. `extbl') to indicate that
  5088.      only the low 3 bits of the address are relevant.  During
  5089.      relaxation, the code may be altered to use an immediate instead of
  5090.      a register shift.
  5091.  
  5092. `!lituse_addr!N'
  5093.      Used with any other instruction to indicate that the original
  5094.      address is in fact used, and the original `ldq' instruction may
  5095.      not be altered or deleted.  This is useful in conjunction with
  5096.      `lituse_jsr' to test whether a weak symbol is defined.
  5097.  
  5098.           ldq  $27,foo($29)   !literal!1
  5099.           beq  $27,is_undef   !lituse_addr!1
  5100.           jsr  $26,($27),foo  !lituse_jsr!1
  5101.  
  5102. `!lituse_tlsgd!N'
  5103.      Used with a register branch format instruction to indicate that the
  5104.      literal is the call to `__tls_get_addr' used to compute the
  5105.      address of the thread-local storage variable whose descriptor was
  5106.      loaded with `!tlsgd!N'.
  5107.  
  5108. `!lituse_tlsldm!N'
  5109.      Used with a register branch format instruction to indicate that the
  5110.      literal is the call to `__tls_get_addr' used to compute the
  5111.      address of the base of the thread-local storage block for the
  5112.      current module.  The descriptor for the module must have been
  5113.      loaded with `!tlsldm!N'.
  5114.  
  5115. `!gpdisp!N'
  5116.      Used with `ldah' and `lda' to load the GP from the current
  5117.      address, a-la the `ldgp' macro.  The source register for the
  5118.      `ldah' instruction must contain the address of the `ldah'
  5119.      instruction.  There must be exactly one `lda' instruction paired
  5120.      with the `ldah' instruction, though it may appear anywhere in the
  5121.      instruction stream.  The immediate operands must be zero.
  5122.  
  5123.           bsr  $26,foo
  5124.           ldah $29,0($26)     !gpdisp!1
  5125.           lda  $29,0($29)     !gpdisp!1
  5126.  
  5127. `!gprelhigh'
  5128.      Used with an `ldah' instruction to add the high 16 bits of a
  5129.      32-bit displacement from the GP.
  5130.  
  5131. `!gprellow'
  5132.      Used with any memory format instruction to add the low 16 bits of a
  5133.      32-bit displacement from the GP.
  5134.  
  5135. `!gprel'
  5136.      Used with any memory format instruction to add a 16-bit
  5137.      displacement from the GP.
  5138.  
  5139. `!samegp'
  5140.      Used with any branch format instruction to skip the GP load at the
  5141.      target address.  The referenced symbol must have the same GP as the
  5142.      source object file, and it must be declared to either not use `$27'
  5143.      or perform a standard GP load in the first two instructions via the
  5144.      `.prologue' directive.
  5145.  
  5146. `!tlsgd'
  5147. `!tlsgd!N'
  5148.      Used with an `lda' instruction to load the address of a TLS
  5149.      descriptor for a symbol in the GOT.
  5150.  
  5151.      The sequence number N is optional, and if present it used to pair
  5152.      the descriptor load with both the `literal' loading the address of
  5153.      the `__tls_get_addr' function and the `lituse_tlsgd' marking the
  5154.      call to that function.
  5155.  
  5156.      For proper relaxation, both the `tlsgd', `literal' and `lituse'
  5157.      relocations must be in the same extended basic block.  That is,
  5158.      the relocation with the lowest address must be executed first at
  5159.      runtime.
  5160.  
  5161. `!tlsldm'
  5162. `!tlsldm!N'
  5163.      Used with an `lda' instruction to load the address of a TLS
  5164.      descriptor for the current module in the GOT.
  5165.  
  5166.      Similar in other respects to `tlsgd'.
  5167.  
  5168. `!gotdtprel'
  5169.      Used with an `ldq' instruction to load the offset of the TLS
  5170.      symbol within its module's thread-local storage block.  Also known
  5171.      as the dynamic thread pointer offset or dtp-relative offset.
  5172.  
  5173. `!dtprelhi'
  5174. `!dtprello'
  5175. `!dtprel'
  5176.      Like `gprel' relocations except they compute dtp-relative offsets.
  5177.  
  5178. `!gottprel'
  5179.      Used with an `ldq' instruction to load the offset of the TLS
  5180.      symbol from the thread pointer.  Also known as the tp-relative
  5181.      offset.
  5182.  
  5183. `!tprelhi'
  5184. `!tprello'
  5185. `!tprel'
  5186.      Like `gprel' relocations except they compute tp-relative offsets.
  5187.  
  5188. 
  5189. File: as.info,  Node: Alpha Floating Point,  Next: Alpha Directives,  Prev: Alpha Syntax,  Up: Alpha-Dependent
  5190.  
  5191. 8.2.4 Floating Point
  5192. --------------------
  5193.  
  5194. The Alpha family uses both IEEE and VAX floating-point numbers.
  5195.  
  5196. 
  5197. File: as.info,  Node: Alpha Directives,  Next: Alpha Opcodes,  Prev: Alpha Floating Point,  Up: Alpha-Dependent
  5198.  
  5199. 8.2.5 Alpha Assembler Directives
  5200. --------------------------------
  5201.  
  5202. `as' for the Alpha supports many additional directives for
  5203. compatibility with the native assembler.  This section describes them
  5204. only briefly.
  5205.  
  5206.    These are the additional directives in `as' for the Alpha:
  5207.  
  5208. `.arch CPU'
  5209.      Specifies the target processor.  This is equivalent to the `-mCPU'
  5210.      command-line option.  *Note Options: Alpha Options, for a list of
  5211.      values for CPU.
  5212.  
  5213. `.ent FUNCTION[, N]'
  5214.      Mark the beginning of FUNCTION.  An optional number may follow for
  5215.      compatibility with the OSF/1 assembler, but is ignored.  When
  5216.      generating `.mdebug' information, this will create a procedure
  5217.      descriptor for the function.  In ELF, it will mark the symbol as a
  5218.      function a-la the generic `.type' directive.
  5219.  
  5220. `.end FUNCTION'
  5221.      Mark the end of FUNCTION.  In ELF, it will set the size of the
  5222.      symbol a-la the generic `.size' directive.
  5223.  
  5224. `.mask MASK, OFFSET'
  5225.      Indicate which of the integer registers are saved in the current
  5226.      function's stack frame.  MASK is interpreted a bit mask in which
  5227.      bit N set indicates that register N is saved.  The registers are
  5228.      saved in a block located OFFSET bytes from the "canonical frame
  5229.      address" (CFA) which is the value of the stack pointer on entry to
  5230.      the function.  The registers are saved sequentially, except that
  5231.      the return address register (normally `$26') is saved first.
  5232.  
  5233.      This and the other directives that describe the stack frame are
  5234.      currently only used when generating `.mdebug' information.  They
  5235.      may in the future be used to generate DWARF2 `.debug_frame' unwind
  5236.      information for hand written assembly.
  5237.  
  5238. `.fmask MASK, OFFSET'
  5239.      Indicate which of the floating-point registers are saved in the
  5240.      current stack frame.  The MASK and OFFSET parameters are
  5241.      interpreted as with `.mask'.
  5242.  
  5243. `.frame FRAMEREG, FRAMEOFFSET, RETREG[, ARGOFFSET]'
  5244.      Describes the shape of the stack frame.  The frame pointer in use
  5245.      is FRAMEREG; normally this is either `$fp' or `$sp'.  The frame
  5246.      pointer is FRAMEOFFSET bytes below the CFA.  The return address is
  5247.      initially located in RETREG until it is saved as indicated in
  5248.      `.mask'.  For compatibility with OSF/1 an optional ARGOFFSET
  5249.      parameter is accepted and ignored.  It is believed to indicate the
  5250.      offset from the CFA to the saved argument registers.
  5251.  
  5252. `.prologue N'
  5253.      Indicate that the stack frame is set up and all registers have been
  5254.      spilled.  The argument N indicates whether and how the function
  5255.      uses the incoming "procedure vector" (the address of the called
  5256.      function) in `$27'.  0 indicates that `$27' is not used; 1
  5257.      indicates that the first two instructions of the function use `$27'
  5258.      to perform a load of the GP register; 2 indicates that `$27' is
  5259.      used in some non-standard way and so the linker cannot elide the
  5260.      load of the procedure vector during relaxation.
  5261.  
  5262. `.usepv FUNCTION, WHICH'
  5263.      Used to indicate the use of the `$27' register, similar to
  5264.      `.prologue', but without the other semantics of needing to be
  5265.      inside an open `.ent'/`.end' block.
  5266.  
  5267.      The WHICH argument should be either `no', indicating that `$27' is
  5268.      not used, or `std', indicating that the first two instructions of
  5269.      the function perform a GP load.
  5270.  
  5271.      One might use this directive instead of `.prologue' if you are
  5272.      also using dwarf2 CFI directives.
  5273.  
  5274. `.gprel32 EXPRESSION'
  5275.      Computes the difference between the address in EXPRESSION and the
  5276.      GP for the current object file, and stores it in 4 bytes.  In
  5277.      addition to being smaller than a full 8 byte address, this also
  5278.      does not require a dynamic relocation when used in a shared
  5279.      library.
  5280.  
  5281. `.t_floating EXPRESSION'
  5282.      Stores EXPRESSION as an IEEE double precision value.
  5283.  
  5284. `.s_floating EXPRESSION'
  5285.      Stores EXPRESSION as an IEEE single precision value.
  5286.  
  5287. `.f_floating EXPRESSION'
  5288.      Stores EXPRESSION as a VAX F format value.
  5289.  
  5290. `.g_floating EXPRESSION'
  5291.      Stores EXPRESSION as a VAX G format value.
  5292.  
  5293. `.d_floating EXPRESSION'
  5294.      Stores EXPRESSION as a VAX D format value.
  5295.  
  5296. `.set FEATURE'
  5297.      Enables or disables various assembler features.  Using the positive
  5298.      name of the feature enables while using `noFEATURE' disables.
  5299.  
  5300.     `at'
  5301.           Indicates that macro expansions may clobber the "assembler
  5302.           temporary" (`$at' or `$28') register.  Some macros may not be
  5303.           expanded without this and will generate an error message if
  5304.           `noat' is in effect.  When `at' is in effect, a warning will
  5305.           be generated if `$at' is used by the programmer.
  5306.  
  5307.     `macro'
  5308.           Enables the expansion of macro instructions.  Note that
  5309.           variants of real instructions, such as `br label' vs `br
  5310.           $31,label' are considered alternate forms and not macros.
  5311.  
  5312.     `move'
  5313.     `reorder'
  5314.     `volatile'
  5315.           These control whether and how the assembler may re-order
  5316.           instructions.  Accepted for compatibility with the OSF/1
  5317.           assembler, but `as' does not do instruction scheduling, so
  5318.           these features are ignored.
  5319.  
  5320.    The following directives are recognized for compatibility with the
  5321. OSF/1 assembler but are ignored.
  5322.  
  5323.      .proc           .aproc
  5324.      .reguse         .livereg
  5325.      .option         .aent
  5326.      .ugen           .eflag
  5327.      .alias          .noalias
  5328.  
  5329. 
  5330. File: as.info,  Node: Alpha Opcodes,  Prev: Alpha Directives,  Up: Alpha-Dependent
  5331.  
  5332. 8.2.6 Opcodes
  5333. -------------
  5334.  
  5335. For detailed information on the Alpha machine instruction set, see the
  5336. Alpha Architecture Handbook
  5337. (ftp://ftp.digital.com/pub/Digital/info/semiconductor/literature/alphaahb.pdf).
  5338.  
  5339. 
  5340. File: as.info,  Node: ARC-Dependent,  Next: ARM-Dependent,  Prev: Alpha-Dependent,  Up: Machine Dependencies
  5341.  
  5342. 8.3 ARC Dependent Features
  5343. ==========================
  5344.  
  5345. * Menu:
  5346.  
  5347. * ARC Options::              Options
  5348. * ARC Syntax::               Syntax
  5349. * ARC Floating Point::       Floating Point
  5350. * ARC Directives::           ARC Machine Directives
  5351. * ARC Opcodes::              Opcodes
  5352.  
  5353. 
  5354. File: as.info,  Node: ARC Options,  Next: ARC Syntax,  Up: ARC-Dependent
  5355.  
  5356. 8.3.1 Options
  5357. -------------
  5358.  
  5359. `-marc[5|6|7|8]'
  5360.      This option selects the core processor variant.  Using `-marc' is
  5361.      the same as `-marc6', which is also the default.
  5362.  
  5363.     `arc5'
  5364.           Base instruction set.
  5365.  
  5366.     `arc6'
  5367.           Jump-and-link (jl) instruction.  No requirement of an
  5368.           instruction between setting flags and conditional jump.  For
  5369.           example:
  5370.  
  5371.                  mov.f r0,r1
  5372.                  beq   foo
  5373.  
  5374.     `arc7'
  5375.           Break (brk) and sleep (sleep) instructions.
  5376.  
  5377.     `arc8'
  5378.           Software interrupt (swi) instruction.
  5379.  
  5380.  
  5381.      Note: the `.option' directive can to be used to select a core
  5382.      variant from within assembly code.
  5383.  
  5384. `-EB'
  5385.      This option specifies that the output generated by the assembler
  5386.      should be marked as being encoded for a big-endian processor.
  5387.  
  5388. `-EL'
  5389.      This option specifies that the output generated by the assembler
  5390.      should be marked as being encoded for a little-endian processor -
  5391.      this is the default.
  5392.  
  5393.  
  5394. 
  5395. File: as.info,  Node: ARC Syntax,  Next: ARC Floating Point,  Prev: ARC Options,  Up: ARC-Dependent
  5396.  
  5397. 8.3.2 Syntax
  5398. ------------
  5399.  
  5400. * Menu:
  5401.  
  5402. * ARC-Chars::                Special Characters
  5403. * ARC-Regs::                 Register Names
  5404.  
  5405. 
  5406. File: as.info,  Node: ARC-Chars,  Next: ARC-Regs,  Up: ARC Syntax
  5407.  
  5408. 8.3.2.1 Special Characters
  5409. ..........................
  5410.  
  5411. *TODO*
  5412.  
  5413. 
  5414. File: as.info,  Node: ARC-Regs,  Prev: ARC-Chars,  Up: ARC Syntax
  5415.  
  5416. 8.3.2.2 Register Names
  5417. ......................
  5418.  
  5419. *TODO*
  5420.  
  5421. 
  5422. File: as.info,  Node: ARC Floating Point,  Next: ARC Directives,  Prev: ARC Syntax,  Up: ARC-Dependent
  5423.  
  5424. 8.3.3 Floating Point
  5425. --------------------
  5426.  
  5427. The ARC core does not currently have hardware floating point support.
  5428. Software floating point support is provided by `GCC' and uses IEEE
  5429. floating-point numbers.
  5430.  
  5431. 
  5432. File: as.info,  Node: ARC Directives,  Next: ARC Opcodes,  Prev: ARC Floating Point,  Up: ARC-Dependent
  5433.  
  5434. 8.3.4 ARC Machine Directives
  5435. ----------------------------
  5436.  
  5437. The ARC version of `as' supports the following additional machine
  5438. directives:
  5439.  
  5440. `.2byte EXPRESSIONS'
  5441.      *TODO*
  5442.  
  5443. `.3byte EXPRESSIONS'
  5444.      *TODO*
  5445.  
  5446. `.4byte EXPRESSIONS'
  5447.      *TODO*
  5448.  
  5449. `.extAuxRegister NAME,ADDRESS,MODE'
  5450.      The ARCtangent A4 has extensible auxiliary register space.  The
  5451.      auxiliary registers can be defined in the assembler source code by
  5452.      using this directive.  The first parameter is the NAME of the new
  5453.      auxiallry register.  The second parameter is the ADDRESS of the
  5454.      register in the auxiliary register memory map for the variant of
  5455.      the ARC.  The third parameter specifies the MODE in which the
  5456.      register can be operated is and it can be one of:
  5457.  
  5458.     `r          (readonly)'
  5459.  
  5460.     `w          (write only)'
  5461.  
  5462.     `r|w        (read or write)'
  5463.  
  5464.      For example:
  5465.  
  5466.             .extAuxRegister mulhi,0x12,w
  5467.  
  5468.      This specifies an extension auxiliary register called _mulhi_
  5469.      which is at address 0x12 in the memory space and which is only
  5470.      writable.
  5471.  
  5472. `.extCondCode SUFFIX,VALUE'
  5473.      The condition codes on the ARCtangent A4 are extensible and can be
  5474.      specified by means of this assembler directive.  They are specified
  5475.      by the suffix and the value for the condition code.  They can be
  5476.      used to specify extra condition codes with any values.  For
  5477.      example:
  5478.  
  5479.             .extCondCode is_busy,0x14
  5480.  
  5481.              add.is_busy  r1,r2,r3
  5482.              bis_busy     _main
  5483.  
  5484. `.extCoreRegister NAME,REGNUM,MODE,SHORTCUT'
  5485.      Specifies an extension core register NAME for the application.
  5486.      This allows a register NAME with a valid REGNUM between 0 and 60,
  5487.      with the following as valid values for MODE
  5488.  
  5489.     `_r_   (readonly)'
  5490.  
  5491.     `_w_   (write only)'
  5492.  
  5493.     `_r|w_ (read or write)'
  5494.  
  5495.      The other parameter gives a description of the register having a
  5496.      SHORTCUT in the pipeline.  The valid values are:
  5497.  
  5498.     `can_shortcut'
  5499.  
  5500.     `cannot_shortcut'
  5501.  
  5502.      For example:
  5503.  
  5504.             .extCoreRegister mlo,57,r,can_shortcut
  5505.  
  5506.      This defines an extension core register mlo with the value 57 which
  5507.      can shortcut the pipeline.
  5508.  
  5509. `.extInstruction NAME,OPCODE,SUBOPCODE,SUFFIXCLASS,SYNTAXCLASS'
  5510.      The ARCtangent A4 allows the user to specify extension
  5511.      instructions.  The extension instructions are not macros.  The
  5512.      assembler creates encodings for use of these instructions
  5513.      according to the specification by the user.  The parameters are:
  5514.  
  5515.     *NAME
  5516.           Name of the extension instruction
  5517.  
  5518.     *OPCODE
  5519.           Opcode to be used. (Bits 27:31 in the encoding).  Valid values
  5520.           0x10-0x1f or 0x03
  5521.  
  5522.     *SUBOPCODE
  5523.           Subopcode to be used.  Valid values are from 0x09-0x3f.
  5524.           However the correct value also depends on SYNTAXCLASS
  5525.  
  5526.     *SUFFIXCLASS
  5527.           Determines the kinds of suffixes to be allowed.  Valid values
  5528.           are `SUFFIX_NONE', `SUFFIX_COND', `SUFFIX_FLAG' which
  5529.           indicates the absence or presence of conditional suffixes and
  5530.           flag setting by the extension instruction.  It is also
  5531.           possible to specify that an instruction sets the flags and is
  5532.           conditional by using `SUFFIX_CODE' | `SUFFIX_FLAG'.
  5533.  
  5534.     *SYNTAXCLASS
  5535.           Determines the syntax class for the instruction.  It can have
  5536.           the following values:
  5537.  
  5538.          ``SYNTAX_2OP':'
  5539.                2 Operand Instruction
  5540.  
  5541.          ``SYNTAX_3OP':'
  5542.                3 Operand Instruction
  5543.  
  5544.           In addition there could be modifiers for the syntax class as
  5545.           described below:
  5546.  
  5547.                Syntax Class Modifiers are:
  5548.  
  5549.              - `OP1_MUST_BE_IMM': Modifies syntax class SYNTAX_3OP,
  5550.                specifying that the first operand of a three-operand
  5551.                instruction must be an immediate (i.e. the result is
  5552.                discarded).  OP1_MUST_BE_IMM is used by bitwise ORing it
  5553.                with SYNTAX_3OP as given in the example below.  This
  5554.                could usually be used to set the flags using specific
  5555.                instructions and not retain results.
  5556.  
  5557.              - `OP1_IMM_IMPLIED': Modifies syntax class SYNTAX_20P, it
  5558.                specifies that there is an implied immediate destination
  5559.                operand which does not appear in the syntax.  For
  5560.                example, if the source code contains an instruction like:
  5561.  
  5562.                     inst r1,r2
  5563.  
  5564.                it really means that the first argument is an implied
  5565.                immediate (that is, the result is discarded).  This is
  5566.                the same as though the source code were: inst 0,r1,r2.
  5567.                You use OP1_IMM_IMPLIED by bitwise ORing it with
  5568.                SYNTAX_20P.
  5569.  
  5570.  
  5571.      For example, defining 64-bit multiplier with immediate operands:
  5572.  
  5573.           .extInstruction mp64,0x14,0x0,SUFFIX_COND | SUFFIX_FLAG ,
  5574.                           SYNTAX_3OP|OP1_MUST_BE_IMM
  5575.  
  5576.      The above specifies an extension instruction called mp64 which has
  5577.      3 operands, sets the flags, can be used with a condition code, for
  5578.      which the first operand is an immediate.  (Equivalent to
  5579.      discarding the result of the operation).
  5580.  
  5581.            .extInstruction mul64,0x14,0x00,SUFFIX_COND, SYNTAX_2OP|OP1_IMM_IMPLIED
  5582.  
  5583.      This describes a 2 operand instruction with an implicit first
  5584.      immediate operand.  The result of this operation would be
  5585.      discarded.
  5586.  
  5587. `.half EXPRESSIONS'
  5588.      *TODO*
  5589.  
  5590. `.long EXPRESSIONS'
  5591.      *TODO*
  5592.  
  5593. `.option ARC|ARC5|ARC6|ARC7|ARC8'
  5594.      The `.option' directive must be followed by the desired core
  5595.      version. Again `arc' is an alias for `arc6'.
  5596.  
  5597.      Note: the `.option' directive overrides the command line option
  5598.      `-marc'; a warning is emitted when the version is not consistent
  5599.      between the two - even for the implicit default core version
  5600.      (arc6).
  5601.  
  5602. `.short EXPRESSIONS'
  5603.      *TODO*
  5604.  
  5605. `.word EXPRESSIONS'
  5606.      *TODO*
  5607.  
  5608.  
  5609. 
  5610. File: as.info,  Node: ARC Opcodes,  Prev: ARC Directives,  Up: ARC-Dependent
  5611.  
  5612. 8.3.5 Opcodes
  5613. -------------
  5614.  
  5615. For information on the ARC instruction set, see `ARC Programmers
  5616. Reference Manual', ARC International (www.arc.com)
  5617.  
  5618. 
  5619. File: as.info,  Node: ARM-Dependent,  Next: CRIS-Dependent,  Prev: ARC-Dependent,  Up: Machine Dependencies
  5620.  
  5621. 8.4 ARM Dependent Features
  5622. ==========================
  5623.  
  5624. * Menu:
  5625.  
  5626. * ARM Options::              Options
  5627. * ARM Syntax::               Syntax
  5628. * ARM Floating Point::       Floating Point
  5629. * ARM Directives::           ARM Machine Directives
  5630. * ARM Opcodes::              Opcodes
  5631. * ARM Mapping Symbols::      Mapping Symbols
  5632.  
  5633. 
  5634. File: as.info,  Node: ARM Options,  Next: ARM Syntax,  Up: ARM-Dependent
  5635.  
  5636. 8.4.1 Options
  5637. -------------
  5638.  
  5639. `-mcpu=PROCESSOR[+EXTENSION...]'
  5640.      This option specifies the target processor.  The assembler will
  5641.      issue an error message if an attempt is made to assemble an
  5642.      instruction which will not execute on the target processor.  The
  5643.      following processor names are recognized: `arm1', `arm2', `arm250',
  5644.      `arm3', `arm6', `arm60', `arm600', `arm610', `arm620', `arm7',
  5645.      `arm7m', `arm7d', `arm7dm', `arm7di', `arm7dmi', `arm70', `arm700',
  5646.      `arm700i', `arm710', `arm710t', `arm720', `arm720t', `arm740t',
  5647.      `arm710c', `arm7100', `arm7500', `arm7500fe', `arm7t', `arm7tdmi',
  5648.      `arm7tdmi-s', `arm8', `arm810', `strongarm', `strongarm1',
  5649.      `strongarm110', `strongarm1100', `strongarm1110', `arm9', `arm920',
  5650.      `arm920t', `arm922t', `arm940t', `arm9tdmi', `arm9e', `arm926e',
  5651.      `arm926ej-s', `arm946e-r0', `arm946e', `arm966e-r0', `arm966e',
  5652.      `arm10t', `arm10e', `arm1020', `arm1020t', `arm1020e',
  5653.      `arm1026ej-s', `arm1136j-s', `arm1136jf-s', `arm1176jz-s',
  5654.      `arm1176jzf-s', `mpcore', `mpcorenovfp', `ep9312' (ARM920 with
  5655.      Cirrus Maverick coprocessor), `i80200' (Intel XScale processor)
  5656.      `iwmmxt' (Intel(r) XScale processor with Wireless MMX(tm)
  5657.      technology coprocessor) and `xscale'.  The special name `all' may
  5658.      be used to allow the assembler to accept instructions valid for
  5659.      any ARM processor.
  5660.  
  5661.      In addition to the basic instruction set, the assembler can be
  5662.      told to accept various extension mnemonics that extend the
  5663.      processor using the co-processor instruction space.  For example,
  5664.      `-mcpu=arm920+maverick' is equivalent to specifying
  5665.      `-mcpu=ep9312'.  The following extensions are currently supported:
  5666.      `+maverick' `+iwmmxt' and `+xscale'.
  5667.  
  5668. `-march=ARCHITECTURE[+EXTENSION...]'
  5669.      This option specifies the target architecture.  The assembler will
  5670.      issue an error message if an attempt is made to assemble an
  5671.      instruction which will not execute on the target architecture.
  5672.      The following architecture names are recognized: `armv1', `armv2',
  5673.      `armv2a', `armv2s', `armv3', `armv3m', `armv4', `armv4xm',
  5674.      `armv4t', `armv4txm', `armv5', `armv5t', `armv5txm', `armv5te',
  5675.      `armv5texp', `armv6', `armv6j', `armv6k', `armv6z', `armv6zk',
  5676.      `iwmmxt' and `xscale'.  If both `-mcpu' and `-march' are
  5677.      specified, the assembler will use the setting for `-mcpu'.
  5678.  
  5679.      The architecture option can be extended with the same instruction
  5680.      set extension options as the `-mcpu' option.
  5681.  
  5682. `-mfpu=FLOATING-POINT-FORMAT'
  5683.      This option specifies the floating point format to assemble for.
  5684.      The assembler will issue an error message if an attempt is made to
  5685.      assemble an instruction which will not execute on the target
  5686.      floating point unit.  The following format options are recognized:
  5687.      `softfpa', `fpe', `fpe2', `fpe3', `fpa', `fpa10', `fpa11',
  5688.      `arm7500fe', `softvfp', `softvfp+vfp', `vfp', `vfp10', `vfp10-r0',
  5689.      `vfp9', `vfpxd', `arm1020t', `arm1020e', `arm1136jf-s' and
  5690.      `maverick'.
  5691.  
  5692.      In addition to determining which instructions are assembled, this
  5693.      option also affects the way in which the `.double' assembler
  5694.      directive behaves when assembling little-endian code.
  5695.  
  5696.      The default is dependent on the processor selected.  For
  5697.      Architecture 5 or later, the default is to assembler for VFP
  5698.      instructions; for earlier architectures the default is to assemble
  5699.      for FPA instructions.
  5700.  
  5701. `-mthumb'
  5702.      This option specifies that the assembler should start assembling
  5703.      Thumb instructions; that is, it should behave as though the file
  5704.      starts with a `.code 16' directive.
  5705.  
  5706. `-mthumb-interwork'
  5707.      This option specifies that the output generated by the assembler
  5708.      should be marked as supporting interworking.
  5709.  
  5710. `-mapcs `[26|32]''
  5711.      This option specifies that the output generated by the assembler
  5712.      should be marked as supporting the indicated version of the Arm
  5713.      Procedure.  Calling Standard.
  5714.  
  5715. `-matpcs'
  5716.      This option specifies that the output generated by the assembler
  5717.      should be marked as supporting the Arm/Thumb Procedure Calling
  5718.      Standard.  If enabled this option will cause the assembler to
  5719.      create an empty debugging section in the object file called
  5720.      .arm.atpcs.  Debuggers can use this to determine the ABI being
  5721.      used by.
  5722.  
  5723. `-mapcs-float'
  5724.      This indicates the floating point variant of the APCS should be
  5725.      used.  In this variant floating point arguments are passed in FP
  5726.      registers rather than integer registers.
  5727.  
  5728. `-mapcs-reentrant'
  5729.      This indicates that the reentrant variant of the APCS should be
  5730.      used.  This variant supports position independent code.
  5731.  
  5732. `-mfloat-abi=ABI'
  5733.      This option specifies that the output generated by the assembler
  5734.      should be marked as using specified floating point ABI.  The
  5735.      following values are recognized: `soft', `softfp' and `hard'.
  5736.  
  5737. `-meabi=VER'
  5738.      This option specifies which EABI version the produced object files
  5739.      should conform to.  The following values are recognised: `gnu' and
  5740.      `4'.
  5741.  
  5742. `-EB'
  5743.      This option specifies that the output generated by the assembler
  5744.      should be marked as being encoded for a big-endian processor.
  5745.  
  5746. `-EL'
  5747.      This option specifies that the output generated by the assembler
  5748.      should be marked as being encoded for a little-endian processor.
  5749.  
  5750. `-k'
  5751.      This option specifies that the output of the assembler should be
  5752.      marked as position-independent code (PIC).
  5753.  
  5754.  
  5755. 
  5756. File: as.info,  Node: ARM Syntax,  Next: ARM Floating Point,  Prev: ARM Options,  Up: ARM-Dependent
  5757.  
  5758. 8.4.2 Syntax
  5759. ------------
  5760.  
  5761. * Menu:
  5762.  
  5763. * ARM-Chars::                Special Characters
  5764. * ARM-Regs::                 Register Names
  5765.  
  5766. 
  5767. File: as.info,  Node: ARM-Chars,  Next: ARM-Regs,  Up: ARM Syntax
  5768.  
  5769. 8.4.2.1 Special Characters
  5770. ..........................
  5771.  
  5772. The presence of a `@' on a line indicates the start of a comment that
  5773. extends to the end of the current line.  If a `#' appears as the first
  5774. character of a line, the whole line is treated as a comment.
  5775.  
  5776.    The `;' character can be used instead of a newline to separate
  5777. statements.
  5778.  
  5779.    Either `#' or `$' can be used to indicate immediate operands.
  5780.  
  5781.    *TODO* Explain about /data modifier on symbols.
  5782.  
  5783. 
  5784. File: as.info,  Node: ARM-Regs,  Prev: ARM-Chars,  Up: ARM Syntax
  5785.  
  5786. 8.4.2.2 Register Names
  5787. ......................
  5788.  
  5789. *TODO* Explain about ARM register naming, and the predefined names.
  5790.  
  5791. 
  5792. File: as.info,  Node: ARM Floating Point,  Next: ARM Directives,  Prev: ARM Syntax,  Up: ARM-Dependent
  5793.  
  5794. 8.4.3 Floating Point
  5795. --------------------
  5796.  
  5797. The ARM family uses IEEE floating-point numbers.
  5798.  
  5799. 
  5800. File: as.info,  Node: ARM Directives,  Next: ARM Opcodes,  Prev: ARM Floating Point,  Up: ARM-Dependent
  5801.  
  5802. 8.4.4 ARM Machine Directives
  5803. ----------------------------
  5804.  
  5805. `.align EXPRESSION [, EXPRESSION]'
  5806.      This is the generic .ALIGN directive.  For the ARM however if the
  5807.      first argument is zero (ie no alignment is needed) the assembler
  5808.      will behave as if the argument had been 2 (ie pad to the next four
  5809.      byte boundary).  This is for compatibility with ARM's own
  5810.      assembler.
  5811.  
  5812. `NAME .req REGISTER NAME'
  5813.      This creates an alias for REGISTER NAME called NAME.  For example:
  5814.  
  5815.                   foo .req r0
  5816.  
  5817. `.unreq ALIAS-NAME'
  5818.      This undefines a register alias which was previously defined using
  5819.      the `req' directive.  For example:
  5820.  
  5821.                   foo .req r0
  5822.                   .unreq foo
  5823.  
  5824.      An error occurs if the name is undefined.  Note - this pseudo op
  5825.      can be used to delete builtin in register name aliases (eg 'r0').
  5826.      This should only be done if it is really necessary.
  5827.  
  5828. `.code `[16|32]''
  5829.      This directive selects the instruction set being generated. The
  5830.      value 16 selects Thumb, with the value 32 selecting ARM.
  5831.  
  5832. `.thumb'
  5833.      This performs the same action as .CODE 16.
  5834.  
  5835. `.arm'
  5836.      This performs the same action as .CODE 32.
  5837.  
  5838. `.force_thumb'
  5839.      This directive forces the selection of Thumb instructions, even if
  5840.      the target processor does not support those instructions
  5841.  
  5842. `.thumb_func'
  5843.      This directive specifies that the following symbol is the name of a
  5844.      Thumb encoded function.  This information is necessary in order to
  5845.      allow the assembler and linker to generate correct code for
  5846.      interworking between Arm and Thumb instructions and should be used
  5847.      even if interworking is not going to be performed.  The presence
  5848.      of this directive also implies `.thumb'
  5849.  
  5850. `.thumb_set'
  5851.      This performs the equivalent of a `.set' directive in that it
  5852.      creates a symbol which is an alias for another symbol (possibly
  5853.      not yet defined).  This directive also has the added property in
  5854.      that it marks the aliased symbol as being a thumb function entry
  5855.      point, in the same way that the `.thumb_func' directive does.
  5856.  
  5857. `.ltorg'
  5858.      This directive causes the current contents of the literal pool to
  5859.      be dumped into the current section (which is assumed to be the
  5860.      .text section) at the current location (aligned to a word
  5861.      boundary).  `GAS' maintains a separate literal pool for each
  5862.      section and each sub-section.  The `.ltorg' directive will only
  5863.      affect the literal pool of the current section and sub-section.
  5864.      At the end of assembly all remaining, un-empty literal pools will
  5865.      automatically be dumped.
  5866.  
  5867.      Note - older versions of `GAS' would dump the current literal pool
  5868.      any time a section change occurred.  This is no longer done, since
  5869.      it prevents accurate control of the placement of literal pools.
  5870.  
  5871. `.pool'
  5872.      This is a synonym for .ltorg.
  5873.  
  5874. `.unwind_fnstart'
  5875.      Marks the start of a function with an unwind table entry.
  5876.  
  5877. `.unwind_fnend'
  5878.      Marks the end of a function with an unwind table entry.  The
  5879.      unwind index table entry is created when this directive is
  5880.      processed.
  5881.  
  5882.      If no personality routine has been specified then standard
  5883.      personality routine 0 or 1 will be used, depending on the number
  5884.      of unwind opcodes required.
  5885.  
  5886. `.cantunwind'
  5887.      Prevents unwinding through the current function.  No personality
  5888.      routine or exception table data is required or permitted.
  5889.  
  5890. `.personality NAME'
  5891.      Sets the personality routine for the current function to NAME.
  5892.  
  5893. `.personalityindex INDEX'
  5894.      Sets the personality routine for the current function to the EABI
  5895.      standard routine number INDEX
  5896.  
  5897. `.handlerdata'
  5898.      Marks the end of the current function, and the start of the
  5899.      exception table entry for that function.  Anything between this
  5900.      directive and the `.fnend' directive will be added to the
  5901.      exception table entry.
  5902.  
  5903.      Must be preceded by a `.personality' or `.personalityindex'
  5904.      directive.
  5905.  
  5906. `.save REGLIST'
  5907.      Generate unwinder annotations to restore the registers in REGLIST.
  5908.      The format of REGLIST is the same as the corresponding
  5909.      store-multiple instruction.
  5910.  
  5911.      _core registers_
  5912.             .save {r4, r5, r6, lr}
  5913.             stmfd sp!, {r4, r5, r6, lr}
  5914.      _FPA registers_
  5915.             .save f4, 2
  5916.             sfmfd f4, 2, [sp]!
  5917.      _VFP registers_
  5918.             .save {d8, d9, d10}
  5919.             fstmdf sp!, {d8, d9, d10}
  5920.      _iWMMXt registers_
  5921.             .save {wr10, wr11}
  5922.             wstrd wr11, [sp, #-8]!
  5923.             wstrd wr10, [sp, #-8]!
  5924.           or
  5925.             .save wr11
  5926.             wstrd wr11, [sp, #-8]!
  5927.             .save wr10
  5928.             wstrd wr10, [sp, #-8]!
  5929.  
  5930. `.pad #COUNT'
  5931.      Generate unwinder annotations for a stack adjustment of COUNT
  5932.      bytes.  A positive value indicates the function prologue allocated
  5933.      stack space by decrementing the stack pointer.
  5934.  
  5935. `.movsp REG'
  5936.      Tell the unwinder that REG contains the current stack pointer.
  5937.  
  5938. `.setfp FPREG, SPREG [, #OFFSET]'
  5939.      Make all unwinder annotations relaive to a frame pointer.  Without
  5940.      this the unwinder will use offsets from the stack pointer.
  5941.  
  5942.      The syntax of this directive is the same as the `sub' or `mov'
  5943.      instruction used to set the frame pointer.  SPREG must be either
  5944.      `sp' or mentioned in a previous `.movsp' directive.
  5945.  
  5946.           .movsp ip
  5947.           mov ip, sp
  5948.           ...
  5949.           .setfp fp, ip, #4
  5950.           sub fp, ip, #4
  5951.  
  5952. `.raw OFFSET, BYTE1, ...'
  5953.      Insert one of more arbitary unwind opcode bytes, which are known
  5954.      to adjust the stack pointer by OFFSET bytes.
  5955.  
  5956.      For example `.unwind_raw 4, 0xb1, 0x01' is equivalent to `.save
  5957.      {r0}'
  5958.  
  5959.  
  5960. 
  5961. File: as.info,  Node: ARM Opcodes,  Next: ARM Mapping Symbols,  Prev: ARM Directives,  Up: ARM-Dependent
  5962.  
  5963. 8.4.5 Opcodes
  5964. -------------
  5965.  
  5966. `as' implements all the standard ARM opcodes.  It also implements
  5967. several pseudo opcodes, including several synthetic load instructions.
  5968.  
  5969. `NOP'
  5970.             nop
  5971.  
  5972.      This pseudo op will always evaluate to a legal ARM instruction
  5973.      that does nothing.  Currently it will evaluate to MOV r0, r0.
  5974.  
  5975. `LDR'
  5976.             ldr <register> , = <expression>
  5977.  
  5978.      If expression evaluates to a numeric constant then a MOV or MVN
  5979.      instruction will be used in place of the LDR instruction, if the
  5980.      constant can be generated by either of these instructions.
  5981.      Otherwise the constant will be placed into the nearest literal
  5982.      pool (if it not already there) and a PC relative LDR instruction
  5983.      will be generated.
  5984.  
  5985. `ADR'
  5986.             adr <register> <label>
  5987.  
  5988.      This instruction will load the address of LABEL into the indicated
  5989.      register.  The instruction will evaluate to a PC relative ADD or
  5990.      SUB instruction depending upon where the label is located.  If the
  5991.      label is out of range, or if it is not defined in the same file
  5992.      (and section) as the ADR instruction, then an error will be
  5993.      generated.  This instruction will not make use of the literal pool.
  5994.  
  5995. `ADRL'
  5996.             adrl <register> <label>
  5997.  
  5998.      This instruction will load the address of LABEL into the indicated
  5999.      register.  The instruction will evaluate to one or two PC relative
  6000.      ADD or SUB instructions depending upon where the label is located.
  6001.      If a second instruction is not needed a NOP instruction will be
  6002.      generated in its place, so that this instruction is always 8 bytes
  6003.      long.
  6004.  
  6005.      If the label is out of range, or if it is not defined in the same
  6006.      file (and section) as the ADRL instruction, then an error will be
  6007.      generated.  This instruction will not make use of the literal pool.
  6008.  
  6009.  
  6010.    For information on the ARM or Thumb instruction sets, see `ARM
  6011. Software Development Toolkit Reference Manual', Advanced RISC Machines
  6012. Ltd.
  6013.  
  6014. 
  6015. File: as.info,  Node: ARM Mapping Symbols,  Prev: ARM Opcodes,  Up: ARM-Dependent
  6016.  
  6017. 8.4.6 Mapping Symbols
  6018. ---------------------
  6019.  
  6020. The ARM ELF specification requires that special symbols be inserted
  6021. into object files to mark certain features:
  6022.  
  6023. `$a'
  6024.      At the start of a region of code containing ARM instructions.
  6025.  
  6026. `$t'
  6027.      At the start of a region of code containing THUMB instructions.
  6028.  
  6029. `$d'
  6030.      At the start of a region of data.
  6031.  
  6032.  
  6033.    The assembler will automatically insert these symbols for you - there
  6034. is no need to code them yourself.  Support for tagging symbols ($b, $f,
  6035. $p and $m) which is also mentioned in the current ARM ELF specification
  6036. is not implemented.  This is because they have been dropped from the
  6037. new EABI and so tools cannot rely upon their presence.
  6038.  
  6039. 
  6040. File: as.info,  Node: CRIS-Dependent,  Next: D10V-Dependent,  Prev: ARM-Dependent,  Up: Machine Dependencies
  6041.  
  6042. 8.5 CRIS Dependent Features
  6043. ===========================
  6044.  
  6045. * Menu:
  6046.  
  6047. * CRIS-Opts::              Command-line Options
  6048. * CRIS-Expand::            Instruction expansion
  6049. * CRIS-Symbols::           Symbols
  6050. * CRIS-Syntax::            Syntax
  6051.  
  6052. 
  6053. File: as.info,  Node: CRIS-Opts,  Next: CRIS-Expand,  Up: CRIS-Dependent
  6054.  
  6055. 8.5.1 Command-line Options
  6056. --------------------------
  6057.  
  6058. The CRIS version of `as' has these machine-dependent command-line
  6059. options.
  6060.  
  6061.    The format of the generated object files can be either ELF or a.out,
  6062. specified by the command-line options `--emulation=crisaout' and
  6063. `--emulation=criself'.  The default is ELF (criself), unless `as' has
  6064. been configured specifically for a.out by using the configuration name
  6065. `cris-axis-aout'.
  6066.  
  6067.    There are two different link-incompatible ELF object file variants
  6068. for CRIS, for use in environments where symbols are expected to be
  6069. prefixed by a leading `_' character and for environments without such a
  6070. symbol prefix.  The variant used for GNU/Linux port has no symbol
  6071. prefix.  Which variant to produce is specified by either of the options
  6072. `--underscore' and `--no-underscore'.  The default is `--underscore'.
  6073. Since symbols in CRIS a.out objects are expected to have a `_' prefix,
  6074. specifying `--no-underscore' when generating a.out objects is an error.
  6075. Besides the object format difference, the effect of this option is to
  6076. parse register names differently (*note crisnous::).  The
  6077. `--no-underscore' option makes a `$' register prefix mandatory.
  6078.  
  6079.    The option `--pic' must be passed to `as' in order to recognize the
  6080. symbol syntax used for ELF (SVR4 PIC) position-independent-code (*note
  6081. crispic::).  This will also affect expansion of instructions.  The
  6082. expansion with `--pic' will use PC-relative rather than (slightly
  6083. faster) absolute addresses in those expansions.
  6084.  
  6085.    The option `--march=ARCHITECTURE' specifies the recognized
  6086. instruction set and recognized register names.  It also controls the
  6087. architecture type of the object file.  Valid values for ARCHITECTURE
  6088. are:
  6089. `v0_v10'
  6090.      All instructions and register names for any architecture variant
  6091.      in the set v0...v10 are recognized.  This is the default if the
  6092.      target is configured as cris-*.
  6093.  
  6094. `v10'
  6095.      Only instructions and register names for CRIS v10 (as found in
  6096.      ETRAX 100 LX) are recognized.  This is the default if the target
  6097.      is configured as crisv10-*.
  6098.  
  6099. `v32'
  6100.      Only instructions and register names for CRIS v32 (code name
  6101.      Guinness) are recognized.  This is the default if the target is
  6102.      configured as crisv32-*.  This value implies `--no-mul-bug-abort'.
  6103.      (A subsequent `--mul-bug-abort' will turn it back on.)
  6104.  
  6105. `common_v10_v32'
  6106.      Only instructions with register names and addressing modes with
  6107.      opcodes common to the v10 and v32 are recognized.
  6108.  
  6109.    When `-N' is specified, `as' will emit a warning when a 16-bit
  6110. branch instruction is expanded into a 32-bit multiple-instruction
  6111. construct (*note CRIS-Expand::).
  6112.  
  6113.    Some versions of the CRIS v10, for example in the Etrax 100 LX,
  6114. contain a bug that causes destabilizing memory accesses when a multiply
  6115. instruction is executed with certain values in the first operand just
  6116. before a cache-miss.  When the `--mul-bug-abort' command line option is
  6117. active (the default value), `as' will refuse to assemble a file
  6118. containing a multiply instruction at a dangerous offset, one that could
  6119. be the last on a cache-line, or is in a section with insufficient
  6120. alignment.  This placement checking does not catch any case where the
  6121. multiply instruction is dangerously placed because it is located in a
  6122. delay-slot.  The `--mul-bug-abort' command line option turns off the
  6123. checking.
  6124.  
  6125. 
  6126. File: as.info,  Node: CRIS-Expand,  Next: CRIS-Symbols,  Prev: CRIS-Opts,  Up: CRIS-Dependent
  6127.  
  6128. 8.5.2 Instruction expansion
  6129. ---------------------------
  6130.  
  6131. `as' will silently choose an instruction that fits the operand size for
  6132. `[register+constant]' operands.  For example, the offset `127' in
  6133. `move.d [r3+127],r4' fits in an instruction using a signed-byte offset.
  6134. Similarly, `move.d [r2+32767],r1' will generate an instruction using a
  6135. 16-bit offset.  For symbolic expressions and constants that do not fit
  6136. in 16 bits including the sign bit, a 32-bit offset is generated.
  6137.  
  6138.    For branches, `as' will expand from a 16-bit branch instruction into
  6139. a sequence of instructions that can reach a full 32-bit address.  Since
  6140. this does not correspond to a single instruction, such expansions can
  6141. optionally be warned about.  *Note CRIS-Opts::.
  6142.  
  6143.    If the operand is found to fit the range, a `lapc' mnemonic will
  6144. translate to a `lapcq' instruction.  Use `lapc.d' to force the 32-bit
  6145. `lapc' instruction.
  6146.  
  6147.    Similarly, the `addo' mnemonic will translate to the shortest
  6148. fitting instruction of `addoq', `addo.w' and `addo.d', when used with a
  6149. operand that is a constant known at assembly time.
  6150.  
  6151. 
  6152. File: as.info,  Node: CRIS-Symbols,  Next: CRIS-Syntax,  Prev: CRIS-Expand,  Up: CRIS-Dependent
  6153.  
  6154. 8.5.3 Symbols
  6155. -------------
  6156.  
  6157. Some symbols are defined by the assembler.  They're intended to be used
  6158. in conditional assembly, for example:
  6159.       .if ..asm.arch.cris.v32
  6160.       CODE FOR CRIS V32
  6161.       .elseif ..asm.arch.cris.common_v10_v32
  6162.       CODE COMMON TO CRIS V32 AND CRIS V10
  6163.       .elseif ..asm.arch.cris.v10 | ..asm.arch.cris.any_v0_v10
  6164.       CODE FOR V10
  6165.       .else
  6166.       .error "Code needs to be added here."
  6167.       .endif
  6168.  
  6169.    These symbols are defined in the assembler, reflecting command-line
  6170. options, either when specified or the default.  They are always
  6171. defined, to 0 or 1.
  6172. `..asm.arch.cris.any_v0_v10'
  6173.      This symbol is non-zero when `--march=v0_v10' is specified or the
  6174.      default.
  6175.  
  6176. `..asm.arch.cris.common_v10_v32'
  6177.      Set according to the option `--march=common_v10_v32'.
  6178.  
  6179. `..asm.arch.cris.v10'
  6180.      Reflects the option `--march=v10'.
  6181.  
  6182. `..asm.arch.cris.v32'
  6183.      Corresponds to `--march=v10'.
  6184.  
  6185.    Speaking of symbols, when a symbol is used in code, it can have a
  6186. suffix modifying its value for use in position-independent code. *Note
  6187. CRIS-Pic::.
  6188.  
  6189. 
  6190. File: as.info,  Node: CRIS-Syntax,  Prev: CRIS-Symbols,  Up: CRIS-Dependent
  6191.  
  6192. 8.5.4 Syntax
  6193. ------------
  6194.  
  6195. There are different aspects of the CRIS assembly syntax.
  6196.  
  6197. * Menu:
  6198.  
  6199. * CRIS-Chars::                Special Characters
  6200. * CRIS-Pic::            Position-Independent Code Symbols
  6201. * CRIS-Regs::            Register Names
  6202. * CRIS-Pseudos::        Assembler Directives
  6203.  
  6204. 
  6205. File: as.info,  Node: CRIS-Chars,  Next: CRIS-Pic,  Up: CRIS-Syntax
  6206.  
  6207. 8.5.4.1 Special Characters
  6208. ..........................
  6209.  
  6210. The character `#' is a line comment character.  It starts a comment if
  6211. and only if it is placed at the beginning of a line.
  6212.  
  6213.    A `;' character starts a comment anywhere on the line, causing all
  6214. characters up to the end of the line to be ignored.
  6215.  
  6216.    A `@' character is handled as a line separator equivalent to a
  6217. logical new-line character (except in a comment), so separate
  6218. instructions can be specified on a single line.
  6219.  
  6220. 
  6221. File: as.info,  Node: CRIS-Pic,  Next: CRIS-Regs,  Prev: CRIS-Chars,  Up: CRIS-Syntax
  6222.  
  6223. 8.5.4.2 Symbols in position-independent code
  6224. ............................................
  6225.  
  6226. When generating position-independent code (SVR4 PIC) for use in
  6227. cris-axis-linux-gnu or crisv32-axis-linux-gnu shared libraries, symbol
  6228. suffixes are used to specify what kind of run-time symbol lookup will
  6229. be used, expressed in the object as different _relocation types_.
  6230. Usually, all absolute symbol values must be located in a table, the
  6231. _global offset table_, leaving the code position-independent;
  6232. independent of values of global symbols and independent of the address
  6233. of the code.  The suffix modifies the value of the symbol, into for
  6234. example an index into the global offset table where the real symbol
  6235. value is entered, or a PC-relative value, or a value relative to the
  6236. start of the global offset table.  All symbol suffixes start with the
  6237. character `:' (omitted in the list below).  Every symbol use in code or
  6238. a read-only section must therefore have a PIC suffix to enable a useful
  6239. shared library to be created.  Usually, these constructs must not be
  6240. used with an additive constant offset as is usually allowed, i.e. no 4
  6241. as in `symbol + 4' is allowed.  This restriction is checked at
  6242. link-time, not at assembly-time.
  6243.  
  6244. `GOT'
  6245.      Attaching this suffix to a symbol in an instruction causes the
  6246.      symbol to be entered into the global offset table.  The value is a
  6247.      32-bit index for that symbol into the global offset table.  The
  6248.      name of the corresponding relocation is `R_CRIS_32_GOT'.  Example:
  6249.      `move.d [$r0+extsym:GOT],$r9'
  6250.  
  6251. `GOT16'
  6252.      Same as for `GOT', but the value is a 16-bit index into the global
  6253.      offset table.  The corresponding relocation is `R_CRIS_16_GOT'.
  6254.      Example: `move.d [$r0+asymbol:GOT16],$r10'
  6255.  
  6256. `PLT'
  6257.      This suffix is used for function symbols.  It causes a _procedure
  6258.      linkage table_, an array of code stubs, to be created at the time
  6259.      the shared object is created or linked against, together with a
  6260.      global offset table entry.  The value is a pc-relative offset to
  6261.      the corresponding stub code in the procedure linkage table.  This
  6262.      arrangement causes the run-time symbol resolver to be called to
  6263.      look up and set the value of the symbol the first time the
  6264.      function is called (at latest; depending environment variables).
  6265.      It is only safe to leave the symbol unresolved this way if all
  6266.      references are function calls.  The name of the relocation is
  6267.      `R_CRIS_32_PLT_PCREL'.  Example: `add.d fnname:PLT,$pc'
  6268.  
  6269. `PLTG'
  6270.      Like PLT, but the value is relative to the beginning of the global
  6271.      offset table.  The relocation is `R_CRIS_32_PLT_GOTREL'.  Example:
  6272.      `move.d fnname:PLTG,$r3'
  6273.  
  6274. `GOTPLT'
  6275.      Similar to `PLT', but the value of the symbol is a 32-bit index
  6276.      into the global offset table.  This is somewhat of a mix between
  6277.      the effect of the `GOT' and the `PLT' suffix; the difference to
  6278.      `GOT' is that there will be a procedure linkage table entry
  6279.      created, and that the symbol is assumed to be a function entry and
  6280.      will be resolved by the run-time resolver as with `PLT'.  The
  6281.      relocation is `R_CRIS_32_GOTPLT'.  Example: `jsr
  6282.      [$r0+fnname:GOTPLT]'
  6283.  
  6284. `GOTPLT16'
  6285.      A variant of `GOTPLT' giving a 16-bit value.  Its relocation name
  6286.      is `R_CRIS_16_GOTPLT'.  Example: `jsr [$r0+fnname:GOTPLT16]'
  6287.  
  6288. `GOTOFF'
  6289.      This suffix must only be attached to a local symbol, but may be
  6290.      used in an expression adding an offset.  The value is the address
  6291.      of the symbol relative to the start of the global offset table.
  6292.      The relocation name is `R_CRIS_32_GOTREL'.  Example: `move.d
  6293.      [$r0+localsym:GOTOFF],r3'
  6294.  
  6295. 
  6296. File: as.info,  Node: CRIS-Regs,  Next: CRIS-Pseudos,  Prev: CRIS-Pic,  Up: CRIS-Syntax
  6297.  
  6298. 8.5.4.3 Register names
  6299. ......................
  6300.  
  6301. A `$' character may always prefix a general or special register name in
  6302. an instruction operand but is mandatory when the option
  6303. `--no-underscore' is specified or when the `.syntax register_prefix'
  6304. directive is in effect (*note crisnous::).  Register names are
  6305. case-insensitive.
  6306.  
  6307. 
  6308. File: as.info,  Node: CRIS-Pseudos,  Prev: CRIS-Regs,  Up: CRIS-Syntax
  6309.  
  6310. 8.5.4.4 Assembler Directives
  6311. ............................
  6312.  
  6313. There are a few CRIS-specific pseudo-directives in addition to the
  6314. generic ones.  *Note Pseudo Ops::.  Constants emitted by
  6315. pseudo-directives are in little-endian order for CRIS.  There is no
  6316. support for floating-point-specific directives for CRIS.
  6317.  
  6318. `.dword EXPRESSIONS'
  6319.      The `.dword' directive is a synonym for `.int', expecting zero or
  6320.      more EXPRESSIONS, separated by commas.  For each expression, a
  6321.      32-bit little-endian constant is emitted.
  6322.  
  6323. `.syntax ARGUMENT'
  6324.      The `.syntax' directive takes as ARGUMENT one of the following
  6325.      case-sensitive choices.
  6326.  
  6327.     `no_register_prefix'
  6328.           The `.syntax no_register_prefix' directive makes a `$'
  6329.           character prefix on all registers optional.  It overrides a
  6330.           previous setting, including the corresponding effect of the
  6331.           option `--no-underscore'.  If this directive is used when
  6332.           ordinary symbols do not have a `_' character prefix, care
  6333.           must be taken to avoid ambiguities whether an operand is a
  6334.           register or a symbol; using symbols with names the same as
  6335.           general or special registers then invoke undefined behavior.
  6336.  
  6337.     `register_prefix'
  6338.           This directive makes a `$' character prefix on all registers
  6339.           mandatory.  It overrides a previous setting, including the
  6340.           corresponding effect of the option `--underscore'.
  6341.  
  6342.     `leading_underscore'
  6343.           This is an assertion directive, emitting an error if the
  6344.           `--no-underscore' option is in effect.
  6345.  
  6346.     `no_leading_underscore'
  6347.           This is the opposite of the `.syntax leading_underscore'
  6348.           directive and emits an error if the option `--underscore' is
  6349.           in effect.
  6350.  
  6351. `.arch ARGUMENT'
  6352.      This is an assertion directive, giving an error if the specified
  6353.      ARGUMENT is not the same as the specified or default value for the
  6354.      `--march=ARCHITECTURE' option (*note march-option::).
  6355.  
  6356.  
  6357. 
  6358. File: as.info,  Node: D10V-Dependent,  Next: D30V-Dependent,  Prev: CRIS-Dependent,  Up: Machine Dependencies
  6359.  
  6360. 8.6 D10V Dependent Features
  6361. ===========================
  6362.  
  6363. * Menu:
  6364.  
  6365. * D10V-Opts::                   D10V Options
  6366. * D10V-Syntax::                 Syntax
  6367. * D10V-Float::                  Floating Point
  6368. * D10V-Opcodes::                Opcodes
  6369.  
  6370. 
  6371. File: as.info,  Node: D10V-Opts,  Next: D10V-Syntax,  Up: D10V-Dependent
  6372.  
  6373. 8.6.1 D10V Options
  6374. ------------------
  6375.  
  6376. The Mitsubishi D10V version of `as' has a few machine dependent options.
  6377.  
  6378. `-O'
  6379.      The D10V can often execute two sub-instructions in parallel. When
  6380.      this option is used, `as' will attempt to optimize its output by
  6381.      detecting when instructions can be executed in parallel.
  6382.  
  6383. `--nowarnswap'
  6384.      To optimize execution performance, `as' will sometimes swap the
  6385.      order of instructions. Normally this generates a warning. When
  6386.      this option is used, no warning will be generated when
  6387.      instructions are swapped.
  6388.  
  6389. `--gstabs-packing'
  6390.  
  6391. `--no-gstabs-packing'
  6392.      `as' packs adjacent short instructions into a single packed
  6393.      instruction. `--no-gstabs-packing' turns instruction packing off if
  6394.      `--gstabs' is specified as well; `--gstabs-packing' (the default)
  6395.      turns instruction packing on even when `--gstabs' is specified.
  6396.  
  6397. 
  6398. File: as.info,  Node: D10V-Syntax,  Next: D10V-Float,  Prev: D10V-Opts,  Up: D10V-Dependent
  6399.  
  6400. 8.6.2 Syntax
  6401. ------------
  6402.  
  6403. The D10V syntax is based on the syntax in Mitsubishi's D10V
  6404. architecture manual.  The differences are detailed below.
  6405.  
  6406. * Menu:
  6407.  
  6408. * D10V-Size::                 Size Modifiers
  6409. * D10V-Subs::                 Sub-Instructions
  6410. * D10V-Chars::                Special Characters
  6411. * D10V-Regs::                 Register Names
  6412. * D10V-Addressing::           Addressing Modes
  6413. * D10V-Word::                 @WORD Modifier
  6414.  
  6415. 
  6416. File: as.info,  Node: D10V-Size,  Next: D10V-Subs,  Up: D10V-Syntax
  6417.  
  6418. 8.6.2.1 Size Modifiers
  6419. ......................
  6420.  
  6421. The D10V version of `as' uses the instruction names in the D10V
  6422. Architecture Manual.  However, the names in the manual are sometimes
  6423. ambiguous.  There are instruction names that can assemble to a short or
  6424. long form opcode.  How does the assembler pick the correct form?  `as'
  6425. will always pick the smallest form if it can.  When dealing with a
  6426. symbol that is not defined yet when a line is being assembled, it will
  6427. always use the long form.  If you need to force the assembler to use
  6428. either the short or long form of the instruction, you can append either
  6429. `.s' (short) or `.l' (long) to it.  For example, if you are writing an
  6430. assembly program and you want to do a branch to a symbol that is
  6431. defined later in your program, you can write `bra.s   foo'.  Objdump
  6432. and GDB will always append `.s' or `.l' to instructions which have both
  6433. short and long forms.
  6434.  
  6435. 
  6436. File: as.info,  Node: D10V-Subs,  Next: D10V-Chars,  Prev: D10V-Size,  Up: D10V-Syntax
  6437.  
  6438. 8.6.2.2 Sub-Instructions
  6439. ........................
  6440.  
  6441. The D10V assembler takes as input a series of instructions, either
  6442. one-per-line, or in the special two-per-line format described in the
  6443. next section.  Some of these instructions will be short-form or
  6444. sub-instructions.  These sub-instructions can be packed into a single
  6445. instruction.  The assembler will do this automatically.  It will also
  6446. detect when it should not pack instructions.  For example, when a label
  6447. is defined, the next instruction will never be packaged with the
  6448. previous one.  Whenever a branch and link instruction is called, it
  6449. will not be packaged with the next instruction so the return address
  6450. will be valid.  Nops are automatically inserted when necessary.
  6451.  
  6452.    If you do not want the assembler automatically making these
  6453. decisions, you can control the packaging and execution type (parallel
  6454. or sequential) with the special execution symbols described in the next
  6455. section.
  6456.  
  6457. 
  6458. File: as.info,  Node: D10V-Chars,  Next: D10V-Regs,  Prev: D10V-Subs,  Up: D10V-Syntax
  6459.  
  6460. 8.6.2.3 Special Characters
  6461. ..........................
  6462.  
  6463. `;' and `#' are the line comment characters.  Sub-instructions may be
  6464. executed in order, in reverse-order, or in parallel.  Instructions
  6465. listed in the standard one-per-line format will be executed
  6466. sequentially.  To specify the executing order, use the following
  6467. symbols:
  6468. `->'
  6469.      Sequential with instruction on the left first.
  6470.  
  6471. `<-'
  6472.      Sequential with instruction on the right first.
  6473.  
  6474. `||'
  6475.      Parallel
  6476.    The D10V syntax allows either one instruction per line, one
  6477. instruction per line with the execution symbol, or two instructions per
  6478. line.  For example
  6479. `abs       a1      ->      abs     r0'
  6480.      Execute these sequentially.  The instruction on the right is in
  6481.      the right container and is executed second.
  6482.  
  6483. `abs       r0      <-      abs     a1'
  6484.      Execute these reverse-sequentially.  The instruction on the right
  6485.      is in the right container, and is executed first.
  6486.  
  6487. `ld2w    r2,@r8+         ||      mac     a0,r0,r7'
  6488.      Execute these in parallel.
  6489.  
  6490. `ld2w    r2,@r8+         ||'
  6491. `mac     a0,r0,r7'
  6492.      Two-line format. Execute these in parallel.
  6493.  
  6494. `ld2w    r2,@r8+'
  6495. `mac     a0,r0,r7'
  6496.      Two-line format. Execute these sequentially.  Assembler will put
  6497.      them in the proper containers.
  6498.  
  6499. `ld2w    r2,@r8+         ->'
  6500. `mac     a0,r0,r7'
  6501.      Two-line format. Execute these sequentially.  Same as above but
  6502.      second instruction will always go into right container.
  6503.    Since `$' has no special meaning, you may use it in symbol names.
  6504.  
  6505. 
  6506. File: as.info,  Node: D10V-Regs,  Next: D10V-Addressing,  Prev: D10V-Chars,  Up: D10V-Syntax
  6507.  
  6508. 8.6.2.4 Register Names
  6509. ......................
  6510.  
  6511. You can use the predefined symbols `r0' through `r15' to refer to the
  6512. D10V registers.  You can also use `sp' as an alias for `r15'.  The
  6513. accumulators are `a0' and `a1'.  There are special register-pair names
  6514. that may optionally be used in opcodes that require even-numbered
  6515. registers. Register names are not case sensitive.
  6516.  
  6517.    Register Pairs
  6518. `r0-r1'
  6519.  
  6520. `r2-r3'
  6521.  
  6522. `r4-r5'
  6523.  
  6524. `r6-r7'
  6525.  
  6526. `r8-r9'
  6527.  
  6528. `r10-r11'
  6529.  
  6530. `r12-r13'
  6531.  
  6532. `r14-r15'
  6533.  
  6534.    The D10V also has predefined symbols for these control registers and
  6535. status bits:
  6536. `psw'
  6537.      Processor Status Word
  6538.  
  6539. `bpsw'
  6540.      Backup Processor Status Word
  6541.  
  6542. `pc'
  6543.      Program Counter
  6544.  
  6545. `bpc'
  6546.      Backup Program Counter
  6547.  
  6548. `rpt_c'
  6549.      Repeat Count
  6550.  
  6551. `rpt_s'
  6552.      Repeat Start address
  6553.  
  6554. `rpt_e'
  6555.      Repeat End address
  6556.  
  6557. `mod_s'
  6558.      Modulo Start address
  6559.  
  6560. `mod_e'
  6561.      Modulo End address
  6562.  
  6563. `iba'
  6564.      Instruction Break Address
  6565.  
  6566. `f0'
  6567.      Flag 0
  6568.  
  6569. `f1'
  6570.      Flag 1
  6571.  
  6572. `c'
  6573.      Carry flag
  6574.  
  6575. 
  6576. File: as.info,  Node: D10V-Addressing,  Next: D10V-Word,  Prev: D10V-Regs,  Up: D10V-Syntax
  6577.  
  6578. 8.6.2.5 Addressing Modes
  6579. ........................
  6580.  
  6581. `as' understands the following addressing modes for the D10V.  `RN' in
  6582. the following refers to any of the numbered registers, but _not_ the
  6583. control registers.
  6584. `RN'
  6585.      Register direct
  6586.  
  6587. `@RN'
  6588.      Register indirect
  6589.  
  6590. `@RN+'
  6591.      Register indirect with post-increment
  6592.  
  6593. `@RN-'
  6594.      Register indirect with post-decrement
  6595.  
  6596. `@-SP'
  6597.      Register indirect with pre-decrement
  6598.  
  6599. `@(DISP, RN)'
  6600.      Register indirect with displacement
  6601.  
  6602. `ADDR'
  6603.      PC relative address (for branch or rep).
  6604.  
  6605. `#IMM'
  6606.      Immediate data (the `#' is optional and ignored)
  6607.  
  6608. 
  6609. File: as.info,  Node: D10V-Word,  Prev: D10V-Addressing,  Up: D10V-Syntax
  6610.  
  6611. 8.6.2.6 @WORD Modifier
  6612. ......................
  6613.  
  6614. Any symbol followed by `@word' will be replaced by the symbol's value
  6615. shifted right by 2.  This is used in situations such as loading a
  6616. register with the address of a function (or any other code fragment).
  6617. For example, if you want to load a register with the location of the
  6618. function `main' then jump to that function, you could do it as follows:
  6619.      ldi     r2, main@word
  6620.      jmp     r2
  6621.  
  6622. 
  6623. File: as.info,  Node: D10V-Float,  Next: D10V-Opcodes,  Prev: D10V-Syntax,  Up: D10V-Dependent
  6624.  
  6625. 8.6.3 Floating Point
  6626. --------------------
  6627.  
  6628. The D10V has no hardware floating point, but the `.float' and `.double'
  6629. directives generates IEEE floating-point numbers for compatibility with
  6630. other development tools.
  6631.  
  6632. 
  6633. File: as.info,  Node: D10V-Opcodes,  Prev: D10V-Float,  Up: D10V-Dependent
  6634.  
  6635. 8.6.4 Opcodes
  6636. -------------
  6637.  
  6638. For detailed information on the D10V machine instruction set, see `D10V
  6639. Architecture: A VLIW Microprocessor for Multimedia Applications'
  6640. (Mitsubishi Electric Corp.).  `as' implements all the standard D10V
  6641. opcodes.  The only changes are those described in the section on size
  6642. modifiers
  6643.  
  6644. 
  6645. File: as.info,  Node: D30V-Dependent,  Next: H8/300-Dependent,  Prev: D10V-Dependent,  Up: Machine Dependencies
  6646.  
  6647. 8.7 D30V Dependent Features
  6648. ===========================
  6649.  
  6650. * Menu:
  6651.  
  6652. * D30V-Opts::                   D30V Options
  6653. * D30V-Syntax::                 Syntax
  6654. * D30V-Float::                  Floating Point
  6655. * D30V-Opcodes::                Opcodes
  6656.  
  6657. 
  6658. File: as.info,  Node: D30V-Opts,  Next: D30V-Syntax,  Up: D30V-Dependent
  6659.  
  6660. 8.7.1 D30V Options
  6661. ------------------
  6662.  
  6663. The Mitsubishi D30V version of `as' has a few machine dependent options.
  6664.  
  6665. `-O'
  6666.      The D30V can often execute two sub-instructions in parallel. When
  6667.      this option is used, `as' will attempt to optimize its output by
  6668.      detecting when instructions can be executed in parallel.
  6669.  
  6670. `-n'
  6671.      When this option is used, `as' will issue a warning every time it
  6672.      adds a nop instruction.
  6673.  
  6674. `-N'
  6675.      When this option is used, `as' will issue a warning if it needs to
  6676.      insert a nop after a 32-bit multiply before a load or 16-bit
  6677.      multiply instruction.
  6678.  
  6679. 
  6680. File: as.info,  Node: D30V-Syntax,  Next: D30V-Float,  Prev: D30V-Opts,  Up: D30V-Dependent
  6681.  
  6682. 8.7.2 Syntax
  6683. ------------
  6684.  
  6685. The D30V syntax is based on the syntax in Mitsubishi's D30V
  6686. architecture manual.  The differences are detailed below.
  6687.  
  6688. * Menu:
  6689.  
  6690. * D30V-Size::                 Size Modifiers
  6691. * D30V-Subs::                 Sub-Instructions
  6692. * D30V-Chars::                Special Characters
  6693. * D30V-Guarded::              Guarded Execution
  6694. * D30V-Regs::                 Register Names
  6695. * D30V-Addressing::           Addressing Modes
  6696.  
  6697. 
  6698. File: as.info,  Node: D30V-Size,  Next: D30V-Subs,  Up: D30V-Syntax
  6699.  
  6700. 8.7.2.1 Size Modifiers
  6701. ......................
  6702.  
  6703. The D30V version of `as' uses the instruction names in the D30V
  6704. Architecture Manual.  However, the names in the manual are sometimes
  6705. ambiguous.  There are instruction names that can assemble to a short or
  6706. long form opcode.  How does the assembler pick the correct form?  `as'
  6707. will always pick the smallest form if it can.  When dealing with a
  6708. symbol that is not defined yet when a line is being assembled, it will
  6709. always use the long form.  If you need to force the assembler to use
  6710. either the short or long form of the instruction, you can append either
  6711. `.s' (short) or `.l' (long) to it.  For example, if you are writing an
  6712. assembly program and you want to do a branch to a symbol that is
  6713. defined later in your program, you can write `bra.s foo'.  Objdump and
  6714. GDB will always append `.s' or `.l' to instructions which have both
  6715. short and long forms.
  6716.  
  6717. 
  6718. File: as.info,  Node: D30V-Subs,  Next: D30V-Chars,  Prev: D30V-Size,  Up: D30V-Syntax
  6719.  
  6720. 8.7.2.2 Sub-Instructions
  6721. ........................
  6722.  
  6723. The D30V assembler takes as input a series of instructions, either
  6724. one-per-line, or in the special two-per-line format described in the
  6725. next section.  Some of these instructions will be short-form or
  6726. sub-instructions.  These sub-instructions can be packed into a single
  6727. instruction.  The assembler will do this automatically.  It will also
  6728. detect when it should not pack instructions.  For example, when a label
  6729. is defined, the next instruction will never be packaged with the
  6730. previous one.  Whenever a branch and link instruction is called, it
  6731. will not be packaged with the next instruction so the return address
  6732. will be valid.  Nops are automatically inserted when necessary.
  6733.  
  6734.    If you do not want the assembler automatically making these
  6735. decisions, you can control the packaging and execution type (parallel
  6736. or sequential) with the special execution symbols described in the next
  6737. section.
  6738.  
  6739. 
  6740. File: as.info,  Node: D30V-Chars,  Next: D30V-Guarded,  Prev: D30V-Subs,  Up: D30V-Syntax
  6741.  
  6742. 8.7.2.3 Special Characters
  6743. ..........................
  6744.  
  6745. `;' and `#' are the line comment characters.  Sub-instructions may be
  6746. executed in order, in reverse-order, or in parallel.  Instructions
  6747. listed in the standard one-per-line format will be executed
  6748. sequentially unless you use the `-O' option.
  6749.  
  6750.    To specify the executing order, use the following symbols:
  6751. `->'
  6752.      Sequential with instruction on the left first.
  6753.  
  6754. `<-'
  6755.      Sequential with instruction on the right first.
  6756.  
  6757. `||'
  6758.      Parallel
  6759.  
  6760.    The D30V syntax allows either one instruction per line, one
  6761. instruction per line with the execution symbol, or two instructions per
  6762. line.  For example
  6763. `abs r2,r3 -> abs r4,r5'
  6764.      Execute these sequentially.  The instruction on the right is in
  6765.      the right container and is executed second.
  6766.  
  6767. `abs r2,r3 <- abs r4,r5'
  6768.      Execute these reverse-sequentially.  The instruction on the right
  6769.      is in the right container, and is executed first.
  6770.  
  6771. `abs r2,r3 || abs r4,r5'
  6772.      Execute these in parallel.
  6773.  
  6774. `ldw r2,@(r3,r4) ||'
  6775. `mulx r6,r8,r9'
  6776.      Two-line format. Execute these in parallel.
  6777.  
  6778. `mulx a0,r8,r9'
  6779. `stw r2,@(r3,r4)'
  6780.      Two-line format. Execute these sequentially unless `-O' option is
  6781.      used.  If the `-O' option is used, the assembler will determine if
  6782.      the instructions could be done in parallel (the above two
  6783.      instructions can be done in parallel), and if so, emit them as
  6784.      parallel instructions.  The assembler will put them in the proper
  6785.      containers.  In the above example, the assembler will put the
  6786.      `stw' instruction in left container and the `mulx' instruction in
  6787.      the right container.
  6788.  
  6789. `stw r2,@(r3,r4) ->'
  6790. `mulx a0,r8,r9'
  6791.      Two-line format.  Execute the `stw' instruction followed by the
  6792.      `mulx' instruction sequentially.  The first instruction goes in the
  6793.      left container and the second instruction goes into right
  6794.      container.  The assembler will give an error if the machine
  6795.      ordering constraints are violated.
  6796.  
  6797. `stw r2,@(r3,r4) <-'
  6798. `mulx a0,r8,r9'
  6799.      Same as previous example, except that the `mulx' instruction is
  6800.      executed before the `stw' instruction.
  6801.  
  6802.    Since `$' has no special meaning, you may use it in symbol names.
  6803.  
  6804. 
  6805. File: as.info,  Node: D30V-Guarded,  Next: D30V-Regs,  Prev: D30V-Chars,  Up: D30V-Syntax
  6806.  
  6807. 8.7.2.4 Guarded Execution
  6808. .........................
  6809.  
  6810. `as' supports the full range of guarded execution directives for each
  6811. instruction.  Just append the directive after the instruction proper.
  6812. The directives are:
  6813.  
  6814. `/tx'
  6815.      Execute the instruction if flag f0 is true.
  6816.  
  6817. `/fx'
  6818.      Execute the instruction if flag f0 is false.
  6819.  
  6820. `/xt'
  6821.      Execute the instruction if flag f1 is true.
  6822.  
  6823. `/xf'
  6824.      Execute the instruction if flag f1 is false.
  6825.  
  6826. `/tt'
  6827.      Execute the instruction if both flags f0 and f1 are true.
  6828.  
  6829. `/tf'
  6830.      Execute the instruction if flag f0 is true and flag f1 is false.
  6831.  
  6832. 
  6833. File: as.info,  Node: D30V-Regs,  Next: D30V-Addressing,  Prev: D30V-Guarded,  Up: D30V-Syntax
  6834.  
  6835. 8.7.2.5 Register Names
  6836. ......................
  6837.  
  6838. You can use the predefined symbols `r0' through `r63' to refer to the
  6839. D30V registers.  You can also use `sp' as an alias for `r63' and `link'
  6840. as an alias for `r62'.  The accumulators are `a0' and `a1'.
  6841.  
  6842.    The D30V also has predefined symbols for these control registers and
  6843. status bits:
  6844. `psw'
  6845.      Processor Status Word
  6846.  
  6847. `bpsw'
  6848.      Backup Processor Status Word
  6849.  
  6850. `pc'
  6851.      Program Counter
  6852.  
  6853. `bpc'
  6854.      Backup Program Counter
  6855.  
  6856. `rpt_c'
  6857.      Repeat Count
  6858.  
  6859. `rpt_s'
  6860.      Repeat Start address
  6861.  
  6862. `rpt_e'
  6863.      Repeat End address
  6864.  
  6865. `mod_s'
  6866.      Modulo Start address
  6867.  
  6868. `mod_e'
  6869.      Modulo End address
  6870.  
  6871. `iba'
  6872.      Instruction Break Address
  6873.  
  6874. `f0'
  6875.      Flag 0
  6876.  
  6877. `f1'
  6878.      Flag 1
  6879.  
  6880. `f2'
  6881.      Flag 2
  6882.  
  6883. `f3'
  6884.      Flag 3
  6885.  
  6886. `f4'
  6887.      Flag 4
  6888.  
  6889. `f5'
  6890.      Flag 5
  6891.  
  6892. `f6'
  6893.      Flag 6
  6894.  
  6895. `f7'
  6896.      Flag 7
  6897.  
  6898. `s'
  6899.      Same as flag 4 (saturation flag)
  6900.  
  6901. `v'
  6902.      Same as flag 5 (overflow flag)
  6903.  
  6904. `va'
  6905.      Same as flag 6 (sticky overflow flag)
  6906.  
  6907. `c'
  6908.      Same as flag 7 (carry/borrow flag)
  6909.  
  6910. `b'
  6911.      Same as flag 7 (carry/borrow flag)
  6912.  
  6913. 
  6914. File: as.info,  Node: D30V-Addressing,  Prev: D30V-Regs,  Up: D30V-Syntax
  6915.  
  6916. 8.7.2.6 Addressing Modes
  6917. ........................
  6918.  
  6919. `as' understands the following addressing modes for the D30V.  `RN' in
  6920. the following refers to any of the numbered registers, but _not_ the
  6921. control registers.
  6922. `RN'
  6923.      Register direct
  6924.  
  6925. `@RN'
  6926.      Register indirect
  6927.  
  6928. `@RN+'
  6929.      Register indirect with post-increment
  6930.  
  6931. `@RN-'
  6932.      Register indirect with post-decrement
  6933.  
  6934. `@-SP'
  6935.      Register indirect with pre-decrement
  6936.  
  6937. `@(DISP, RN)'
  6938.      Register indirect with displacement
  6939.  
  6940. `ADDR'
  6941.      PC relative address (for branch or rep).
  6942.  
  6943. `#IMM'
  6944.      Immediate data (the `#' is optional and ignored)
  6945.  
  6946. 
  6947. File: as.info,  Node: D30V-Float,  Next: D30V-Opcodes,  Prev: D30V-Syntax,  Up: D30V-Dependent
  6948.  
  6949. 8.7.3 Floating Point
  6950. --------------------
  6951.  
  6952. The D30V has no hardware floating point, but the `.float' and `.double'
  6953. directives generates IEEE floating-point numbers for compatibility with
  6954. other development tools.
  6955.  
  6956. 
  6957. File: as.info,  Node: D30V-Opcodes,  Prev: D30V-Float,  Up: D30V-Dependent
  6958.  
  6959. 8.7.4 Opcodes
  6960. -------------
  6961.  
  6962. For detailed information on the D30V machine instruction set, see `D30V
  6963. Architecture: A VLIW Microprocessor for Multimedia Applications'
  6964. (Mitsubishi Electric Corp.).  `as' implements all the standard D30V
  6965. opcodes.  The only changes are those described in the section on size
  6966. modifiers
  6967.  
  6968. 
  6969. File: as.info,  Node: H8/300-Dependent,  Next: H8/500-Dependent,  Prev: D30V-Dependent,  Up: Machine Dependencies
  6970.  
  6971. 8.8 H8/300 Dependent Features
  6972. =============================
  6973.  
  6974. * Menu:
  6975.  
  6976. * H8/300 Options::              Options
  6977. * H8/300 Syntax::               Syntax
  6978. * H8/300 Floating Point::       Floating Point
  6979. * H8/300 Directives::           H8/300 Machine Directives
  6980. * H8/300 Opcodes::              Opcodes
  6981.  
  6982. 
  6983. File: as.info,  Node: H8/300 Options,  Next: H8/300 Syntax,  Up: H8/300-Dependent
  6984.  
  6985. 8.8.1 Options
  6986. -------------
  6987.  
  6988. `as' has no additional command-line options for the Renesas (formerly
  6989. Hitachi) H8/300 family.
  6990.  
  6991. 
  6992. File: as.info,  Node: H8/300 Syntax,  Next: H8/300 Floating Point,  Prev: H8/300 Options,  Up: H8/300-Dependent
  6993.  
  6994. 8.8.2 Syntax
  6995. ------------
  6996.  
  6997. * Menu:
  6998.  
  6999. * H8/300-Chars::                Special Characters
  7000. * H8/300-Regs::                 Register Names
  7001. * H8/300-Addressing::           Addressing Modes
  7002.  
  7003. 
  7004. File: as.info,  Node: H8/300-Chars,  Next: H8/300-Regs,  Up: H8/300 Syntax
  7005.  
  7006. 8.8.2.1 Special Characters
  7007. ..........................
  7008.  
  7009. `;' is the line comment character.
  7010.  
  7011.    `$' can be used instead of a newline to separate statements.
  7012. Therefore _you may not use `$' in symbol names_ on the H8/300.
  7013.  
  7014. 
  7015. File: as.info,  Node: H8/300-Regs,  Next: H8/300-Addressing,  Prev: H8/300-Chars,  Up: H8/300 Syntax
  7016.  
  7017. 8.8.2.2 Register Names
  7018. ......................
  7019.  
  7020. You can use predefined symbols of the form `rNh' and `rNl' to refer to
  7021. the H8/300 registers as sixteen 8-bit general-purpose registers.  N is
  7022. a digit from `0' to `7'); for instance, both `r0h' and `r7l' are valid
  7023. register names.
  7024.  
  7025.    You can also use the eight predefined symbols `rN' to refer to the
  7026. H8/300 registers as 16-bit registers (you must use this form for
  7027. addressing).
  7028.  
  7029.    On the H8/300H, you can also use the eight predefined symbols `erN'
  7030. (`er0' ... `er7') to refer to the 32-bit general purpose registers.
  7031.  
  7032.    The two control registers are called `pc' (program counter; a 16-bit
  7033. register, except on the H8/300H where it is 24 bits) and `ccr'
  7034. (condition code register; an 8-bit register).  `r7' is used as the
  7035. stack pointer, and can also be called `sp'.
  7036.  
  7037. 
  7038. File: as.info,  Node: H8/300-Addressing,  Prev: H8/300-Regs,  Up: H8/300 Syntax
  7039.  
  7040. 8.8.2.3 Addressing Modes
  7041. ........................
  7042.  
  7043. as understands the following addressing modes for the H8/300:
  7044. `rN'
  7045.      Register direct
  7046.  
  7047. `@rN'
  7048.      Register indirect
  7049.  
  7050. `@(D, rN)'
  7051. `@(D:16, rN)'
  7052. `@(D:24, rN)'
  7053.      Register indirect: 16-bit or 24-bit displacement D from register
  7054.      N.  (24-bit displacements are only meaningful on the H8/300H.)
  7055.  
  7056. `@rN+'
  7057.      Register indirect with post-increment
  7058.  
  7059. `@-rN'
  7060.      Register indirect with pre-decrement
  7061.  
  7062. ``@'AA'
  7063. ``@'AA:8'
  7064. ``@'AA:16'
  7065. ``@'AA:24'
  7066.      Absolute address `aa'.  (The address size `:24' only makes sense
  7067.      on the H8/300H.)
  7068.  
  7069. `#XX'
  7070. `#XX:8'
  7071. `#XX:16'
  7072. `#XX:32'
  7073.      Immediate data XX.  You may specify the `:8', `:16', or `:32' for
  7074.      clarity, if you wish; but `as' neither requires this nor uses
  7075.      it--the data size required is taken from context.
  7076.  
  7077. ``@'`@'AA'
  7078. ``@'`@'AA:8'
  7079.      Memory indirect.  You may specify the `:8' for clarity, if you
  7080.      wish; but `as' neither requires this nor uses it.
  7081.  
  7082. 
  7083. File: as.info,  Node: H8/300 Floating Point,  Next: H8/300 Directives,  Prev: H8/300 Syntax,  Up: H8/300-Dependent
  7084.  
  7085. 8.8.3 Floating Point
  7086. --------------------
  7087.  
  7088. The H8/300 family has no hardware floating point, but the `.float'
  7089. directive generates IEEE floating-point numbers for compatibility with
  7090. other development tools.
  7091.  
  7092. 
  7093. File: as.info,  Node: H8/300 Directives,  Next: H8/300 Opcodes,  Prev: H8/300 Floating Point,  Up: H8/300-Dependent
  7094.  
  7095. 8.8.4 H8/300 Machine Directives
  7096. -------------------------------
  7097.  
  7098. `as' has the following machine-dependent directives for the H8/300:
  7099.  
  7100. `.h8300h'
  7101.      Recognize and emit additional instructions for the H8/300H
  7102.      variant, and also make `.int' emit 32-bit numbers rather than the
  7103.      usual (16-bit) for the H8/300 family.
  7104.  
  7105. `.h8300s'
  7106.      Recognize and emit additional instructions for the H8S variant, and
  7107.      also make `.int' emit 32-bit numbers rather than the usual (16-bit)
  7108.      for the H8/300 family.
  7109.  
  7110. `.h8300hn'
  7111.      Recognize and emit additional instructions for the H8/300H variant
  7112.      in normal mode, and also make `.int' emit 32-bit numbers rather
  7113.      than the usual (16-bit) for the H8/300 family.
  7114.  
  7115. `.h8300sn'
  7116.      Recognize and emit additional instructions for the H8S variant in
  7117.      normal mode, and also make `.int' emit 32-bit numbers rather than
  7118.      the usual (16-bit) for the H8/300 family.
  7119.  
  7120.    On the H8/300 family (including the H8/300H) `.word' directives
  7121. generate 16-bit numbers.
  7122.  
  7123. 
  7124. File: as.info,  Node: H8/300 Opcodes,  Prev: H8/300 Directives,  Up: H8/300-Dependent
  7125.  
  7126. 8.8.5 Opcodes
  7127. -------------
  7128.  
  7129. For detailed information on the H8/300 machine instruction set, see
  7130. `H8/300 Series Programming Manual'.  For information specific to the
  7131. H8/300H, see `H8/300H Series Programming Manual' (Renesas).
  7132.  
  7133.    `as' implements all the standard H8/300 opcodes.  No additional
  7134. pseudo-instructions are needed on this family.
  7135.  
  7136.    The following table summarizes the H8/300 opcodes, and their
  7137. arguments.  Entries marked `*' are opcodes used only on the H8/300H.
  7138.  
  7139.               Legend:
  7140.                  Rs   source register
  7141.                  Rd   destination register
  7142.                  abs  absolute address
  7143.                  imm  immediate data
  7144.               disp:N  N-bit displacement from a register
  7145.              pcrel:N  N-bit displacement relative to program counter
  7146.  
  7147.         add.b #imm,rd              *  andc #imm,ccr
  7148.         add.b rs,rd                   band #imm,rd
  7149.         add.w rs,rd                   band #imm,@rd
  7150.      *  add.w #imm,rd                 band #imm,@abs:8
  7151.      *  add.l rs,rd                   bra  pcrel:8
  7152.      *  add.l #imm,rd              *  bra  pcrel:16
  7153.         adds #imm,rd                  bt   pcrel:8
  7154.         addx #imm,rd               *  bt   pcrel:16
  7155.         addx rs,rd                    brn  pcrel:8
  7156.         and.b #imm,rd              *  brn  pcrel:16
  7157.         and.b rs,rd                   bf   pcrel:8
  7158.      *  and.w rs,rd                *  bf   pcrel:16
  7159.      *  and.w #imm,rd                 bhi  pcrel:8
  7160.      *  and.l #imm,rd              *  bhi  pcrel:16
  7161.      *  and.l rs,rd                   bls  pcrel:8
  7162.  
  7163.      *  bls  pcrel:16                 bld  #imm,rd
  7164.         bcc  pcrel:8                  bld  #imm,@rd
  7165.      *  bcc  pcrel:16                 bld  #imm,@abs:8
  7166.         bhs  pcrel:8                  bnot #imm,rd
  7167.      *  bhs  pcrel:16                 bnot #imm,@rd
  7168.         bcs  pcrel:8                  bnot #imm,@abs:8
  7169.      *  bcs  pcrel:16                 bnot rs,rd
  7170.         blo  pcrel:8                  bnot rs,@rd
  7171.      *  blo  pcrel:16                 bnot rs,@abs:8
  7172.         bne  pcrel:8                  bor  #imm,rd
  7173.      *  bne  pcrel:16                 bor  #imm,@rd
  7174.         beq  pcrel:8                  bor  #imm,@abs:8
  7175.      *  beq  pcrel:16                 bset #imm,rd
  7176.         bvc  pcrel:8                  bset #imm,@rd
  7177.      *  bvc  pcrel:16                 bset #imm,@abs:8
  7178.         bvs  pcrel:8                  bset rs,rd
  7179.      *  bvs  pcrel:16                 bset rs,@rd
  7180.         bpl  pcrel:8                  bset rs,@abs:8
  7181.      *  bpl  pcrel:16                 bsr  pcrel:8
  7182.         bmi  pcrel:8                  bsr  pcrel:16
  7183.      *  bmi  pcrel:16                 bst  #imm,rd
  7184.         bge  pcrel:8                  bst  #imm,@rd
  7185.      *  bge  pcrel:16                 bst  #imm,@abs:8
  7186.         blt  pcrel:8                  btst #imm,rd
  7187.      *  blt  pcrel:16                 btst #imm,@rd
  7188.         bgt  pcrel:8                  btst #imm,@abs:8
  7189.      *  bgt  pcrel:16                 btst rs,rd
  7190.         ble  pcrel:8                  btst rs,@rd
  7191.      *  ble  pcrel:16                 btst rs,@abs:8
  7192.         bclr #imm,rd                  bxor #imm,rd
  7193.         bclr #imm,@rd                 bxor #imm,@rd
  7194.         bclr #imm,@abs:8              bxor #imm,@abs:8
  7195.         bclr rs,rd                    cmp.b #imm,rd
  7196.         bclr rs,@rd                   cmp.b rs,rd
  7197.         bclr rs,@abs:8                cmp.w rs,rd
  7198.         biand #imm,rd                 cmp.w rs,rd
  7199.         biand #imm,@rd             *  cmp.w #imm,rd
  7200.         biand #imm,@abs:8          *  cmp.l #imm,rd
  7201.         bild #imm,rd               *  cmp.l rs,rd
  7202.         bild #imm,@rd                 daa  rs
  7203.         bild #imm,@abs:8              das  rs
  7204.         bior #imm,rd                  dec.b rs
  7205.         bior #imm,@rd              *  dec.w #imm,rd
  7206.         bior #imm,@abs:8           *  dec.l #imm,rd
  7207.         bist #imm,rd                  divxu.b rs,rd
  7208.         bist #imm,@rd              *  divxu.w rs,rd
  7209.         bist #imm,@abs:8           *  divxs.b rs,rd
  7210.         bixor #imm,rd              *  divxs.w rs,rd
  7211.         bixor #imm,@rd                eepmov
  7212.         bixor #imm,@abs:8          *  eepmovw
  7213.  
  7214.      *  exts.w rd                     mov.w rs,@abs:16
  7215.      *  exts.l rd                  *  mov.l #imm,rd
  7216.      *  extu.w rd                  *  mov.l rs,rd
  7217.      *  extu.l rd                  *  mov.l @rs,rd
  7218.         inc  rs                    *  mov.l @(disp:16,rs),rd
  7219.      *  inc.w #imm,rd              *  mov.l @(disp:24,rs),rd
  7220.      *  inc.l #imm,rd              *  mov.l @rs+,rd
  7221.         jmp  @rs                   *  mov.l @abs:16,rd
  7222.         jmp  abs                   *  mov.l @abs:24,rd
  7223.         jmp  @@abs:8               *  mov.l rs,@rd
  7224.         jsr  @rs                   *  mov.l rs,@(disp:16,rd)
  7225.         jsr  abs                   *  mov.l rs,@(disp:24,rd)
  7226.         jsr  @@abs:8               *  mov.l rs,@-rd
  7227.         ldc  #imm,ccr              *  mov.l rs,@abs:16
  7228.         ldc  rs,ccr                *  mov.l rs,@abs:24
  7229.      *  ldc  @abs:16,ccr              movfpe @abs:16,rd
  7230.      *  ldc  @abs:24,ccr              movtpe rs,@abs:16
  7231.      *  ldc  @(disp:16,rs),ccr        mulxu.b rs,rd
  7232.      *  ldc  @(disp:24,rs),ccr     *  mulxu.w rs,rd
  7233.      *  ldc  @rs+,ccr              *  mulxs.b rs,rd
  7234.      *  ldc  @rs,ccr               *  mulxs.w rs,rd
  7235.      *  mov.b @(disp:24,rs),rd        neg.b rs
  7236.      *  mov.b rs,@(disp:24,rd)     *  neg.w rs
  7237.         mov.b @abs:16,rd           *  neg.l rs
  7238.         mov.b rs,rd                   nop
  7239.         mov.b @abs:8,rd               not.b rs
  7240.         mov.b rs,@abs:8            *  not.w rs
  7241.         mov.b rs,rd                *  not.l rs
  7242.         mov.b #imm,rd                 or.b #imm,rd
  7243.         mov.b @rs,rd                  or.b rs,rd
  7244.         mov.b @(disp:16,rs),rd     *  or.w #imm,rd
  7245.         mov.b @rs+,rd              *  or.w rs,rd
  7246.         mov.b @abs:8,rd            *  or.l #imm,rd
  7247.         mov.b rs,@rd               *  or.l rs,rd
  7248.         mov.b rs,@(disp:16,rd)        orc  #imm,ccr
  7249.         mov.b rs,@-rd                 pop.w rs
  7250.         mov.b rs,@abs:8            *  pop.l rs
  7251.         mov.w rs,@rd                  push.w rs
  7252.      *  mov.w @(disp:24,rs),rd     *  push.l rs
  7253.      *  mov.w rs,@(disp:24,rd)        rotl.b rs
  7254.      *  mov.w @abs:24,rd           *  rotl.w rs
  7255.      *  mov.w rs,@abs:24           *  rotl.l rs
  7256.         mov.w rs,rd                   rotr.b rs
  7257.         mov.w #imm,rd              *  rotr.w rs
  7258.         mov.w @rs,rd               *  rotr.l rs
  7259.         mov.w @(disp:16,rs),rd        rotxl.b rs
  7260.         mov.w @rs+,rd              *  rotxl.w rs
  7261.         mov.w @abs:16,rd           *  rotxl.l rs
  7262.         mov.w rs,@(disp:16,rd)        rotxr.b rs
  7263.         mov.w rs,@-rd              *  rotxr.w rs
  7264.  
  7265.      *  rotxr.l rs                 *  stc  ccr,@(disp:24,rd)
  7266.         bpt                        *  stc  ccr,@-rd
  7267.         rte                        *  stc  ccr,@abs:16
  7268.         rts                        *  stc  ccr,@abs:24
  7269.         shal.b rs                     sub.b rs,rd
  7270.      *  shal.w rs                     sub.w rs,rd
  7271.      *  shal.l rs                  *  sub.w #imm,rd
  7272.         shar.b rs                  *  sub.l rs,rd
  7273.      *  shar.w rs                  *  sub.l #imm,rd
  7274.      *  shar.l rs                     subs #imm,rd
  7275.         shll.b rs                     subx #imm,rd
  7276.      *  shll.w rs                     subx rs,rd
  7277.      *  shll.l rs                  *  trapa #imm
  7278.         shlr.b rs                     xor  #imm,rd
  7279.      *  shlr.w rs                     xor  rs,rd
  7280.      *  shlr.l rs                  *  xor.w #imm,rd
  7281.         sleep                      *  xor.w rs,rd
  7282.         stc  ccr,rd                *  xor.l #imm,rd
  7283.      *  stc  ccr,@rs               *  xor.l rs,rd
  7284.      *  stc  ccr,@(disp:16,rd)        xorc #imm,ccr
  7285.  
  7286.    Four H8/300 instructions (`add', `cmp', `mov', `sub') are defined
  7287. with variants using the suffixes `.b', `.w', and `.l' to specify the
  7288. size of a memory operand.  `as' supports these suffixes, but does not
  7289. require them; since one of the operands is always a register, `as' can
  7290. deduce the correct size.
  7291.  
  7292.    For example, since `r0' refers to a 16-bit register,
  7293.      mov    r0,@foo
  7294. is equivalent to
  7295.      mov.w  r0,@foo
  7296.  
  7297.    If you use the size suffixes, `as' issues a warning when the suffix
  7298. and the register size do not match.
  7299.  
  7300. 
  7301. File: as.info,  Node: H8/500-Dependent,  Next: HPPA-Dependent,  Prev: H8/300-Dependent,  Up: Machine Dependencies
  7302.  
  7303. 8.9 H8/500 Dependent Features
  7304. =============================
  7305.  
  7306. * Menu:
  7307.  
  7308. * H8/500 Options::              Options
  7309. * H8/500 Syntax::               Syntax
  7310. * H8/500 Floating Point::       Floating Point
  7311. * H8/500 Directives::           H8/500 Machine Directives
  7312. * H8/500 Opcodes::              Opcodes
  7313.  
  7314. 
  7315. File: as.info,  Node: H8/500 Options,  Next: H8/500 Syntax,  Up: H8/500-Dependent
  7316.  
  7317. 8.9.1 Options
  7318. -------------
  7319.  
  7320. `as' has no additional command-line options for the Renesas (formerly
  7321. Hitachi) H8/500 family.
  7322.  
  7323. 
  7324. File: as.info,  Node: H8/500 Syntax,  Next: H8/500 Floating Point,  Prev: H8/500 Options,  Up: H8/500-Dependent
  7325.  
  7326. 8.9.2 Syntax
  7327. ------------
  7328.  
  7329. * Menu:
  7330.  
  7331. * H8/500-Chars::                Special Characters
  7332. * H8/500-Regs::                 Register Names
  7333. * H8/500-Addressing::           Addressing Modes
  7334.  
  7335. 
  7336. File: as.info,  Node: H8/500-Chars,  Next: H8/500-Regs,  Up: H8/500 Syntax
  7337.  
  7338. 8.9.2.1 Special Characters
  7339. ..........................
  7340.  
  7341. `!' is the line comment character.
  7342.  
  7343.    `;' can be used instead of a newline to separate statements.
  7344.  
  7345.    Since `$' has no special meaning, you may use it in symbol names.
  7346.  
  7347. 
  7348. File: as.info,  Node: H8/500-Regs,  Next: H8/500-Addressing,  Prev: H8/500-Chars,  Up: H8/500 Syntax
  7349.  
  7350. 8.9.2.2 Register Names
  7351. ......................
  7352.  
  7353. You can use the predefined symbols `r0', `r1', `r2', `r3', `r4', `r5',
  7354. `r6', and `r7' to refer to the H8/500 registers.
  7355.  
  7356.    The H8/500 also has these control registers:
  7357.  
  7358. `cp'
  7359.      code pointer
  7360.  
  7361. `dp'
  7362.      data pointer
  7363.  
  7364. `bp'
  7365.      base pointer
  7366.  
  7367. `tp'
  7368.      stack top pointer
  7369.  
  7370. `ep'
  7371.      extra pointer
  7372.  
  7373. `sr'
  7374.      status register
  7375.  
  7376. `ccr'
  7377.      condition code register
  7378.  
  7379.    All registers are 16 bits long.  To represent 32 bit numbers, use two
  7380. adjacent registers; for distant memory addresses, use one of the segment
  7381. pointers (`cp' for the program counter; `dp' for `r0'-`r3'; `ep' for
  7382. `r4' and `r5'; and `tp' for `r6' and `r7'.
  7383.  
  7384. 
  7385. File: as.info,  Node: H8/500-Addressing,  Prev: H8/500-Regs,  Up: H8/500 Syntax
  7386.  
  7387. 8.9.2.3 Addressing Modes
  7388. ........................
  7389.  
  7390. as understands the following addressing modes for the H8/500:
  7391. `RN'
  7392.      Register direct
  7393.  
  7394. `@RN'
  7395.      Register indirect
  7396.  
  7397. `@(d:8, RN)'
  7398.      Register indirect with 8 bit signed displacement
  7399.  
  7400. `@(d:16, RN)'
  7401.      Register indirect with 16 bit signed displacement
  7402.  
  7403. `@-RN'
  7404.      Register indirect with pre-decrement
  7405.  
  7406. `@RN+'
  7407.      Register indirect with post-increment
  7408.  
  7409. `@AA:8'
  7410.      8 bit absolute address
  7411.  
  7412. `@AA:16'
  7413.      16 bit absolute address
  7414.  
  7415. `#XX:8'
  7416.      8 bit immediate
  7417.  
  7418. `#XX:16'
  7419.      16 bit immediate
  7420.  
  7421. 
  7422. File: as.info,  Node: H8/500 Floating Point,  Next: H8/500 Directives,  Prev: H8/500 Syntax,  Up: H8/500-Dependent
  7423.  
  7424. 8.9.3 Floating Point
  7425. --------------------
  7426.  
  7427. The H8/500 family has no hardware floating point, but the `.float'
  7428. directive generates IEEE floating-point numbers for compatibility with
  7429. other development tools.
  7430.  
  7431. 
  7432. File: as.info,  Node: H8/500 Directives,  Next: H8/500 Opcodes,  Prev: H8/500 Floating Point,  Up: H8/500-Dependent
  7433.  
  7434. 8.9.4 H8/500 Machine Directives
  7435. -------------------------------
  7436.  
  7437. `as' has no machine-dependent directives for the H8/500.  However, on
  7438. this platform the `.int' and `.word' directives generate 16-bit numbers.
  7439.  
  7440. 
  7441. File: as.info,  Node: H8/500 Opcodes,  Prev: H8/500 Directives,  Up: H8/500-Dependent
  7442.  
  7443. 8.9.5 Opcodes
  7444. -------------
  7445.  
  7446. For detailed information on the H8/500 machine instruction set, see
  7447. `H8/500 Series Programming Manual' (Renesas M21T001).
  7448.  
  7449.    `as' implements all the standard H8/500 opcodes.  No additional
  7450. pseudo-instructions are needed on this family.
  7451.  
  7452.    The following table summarizes H8/500 opcodes and their operands:
  7453.  
  7454.      Legend:
  7455.      abs8      8-bit absolute address
  7456.      abs16     16-bit absolute address
  7457.      abs24     24-bit absolute address
  7458.      crb       `ccr', `br', `ep', `dp', `tp', `dp'
  7459.      disp8     8-bit displacement
  7460.      ea        `rn', `@rn', `@(d:8, rn)', `@(d:16, rn)',
  7461.                `@-rn', `@rn+', `@aa:8', `@aa:16',
  7462.                `#xx:8', `#xx:16'
  7463.      ea_mem    `@rn', `@(d:8, rn)', `@(d:16, rn)',
  7464.                `@-rn', `@rn+', `@aa:8', `@aa:16'
  7465.      ea_noimm  `rn', `@rn', `@(d:8, rn)', `@(d:16, rn)',
  7466.                `@-rn', `@rn+', `@aa:8', `@aa:16'
  7467.      fp        r6
  7468.      imm4      4-bit immediate data
  7469.      imm8      8-bit immediate data
  7470.      imm16     16-bit immediate data
  7471.      pcrel8    8-bit offset from program counter
  7472.      pcrel16   16-bit offset from program counter
  7473.      qim       `-2', `-1', `1', `2'
  7474.      rd        any register
  7475.      rs        a register distinct from rd
  7476.      rlist     comma-separated list of registers in parentheses;
  7477.                register ranges `rd-rs' are allowed
  7478.      sp        stack pointer (`r7')
  7479.      sr        status register
  7480.      sz        size; `.b' or `.w'.  If omitted, default `.w'
  7481.  
  7482.      ldc[.b] ea,crb                 bcc[.w] pcrel16
  7483.      ldc[.w] ea,sr                  bcc[.b] pcrel8
  7484.      add[:q] sz qim,ea_noimm        bhs[.w] pcrel16
  7485.      add[:g] sz ea,rd               bhs[.b] pcrel8
  7486.      adds sz ea,rd                  bcs[.w] pcrel16
  7487.      addx sz ea,rd                  bcs[.b] pcrel8
  7488.      and sz ea,rd                   blo[.w] pcrel16
  7489.      andc[.b] imm8,crb              blo[.b] pcrel8
  7490.      andc[.w] imm16,sr              bne[.w] pcrel16
  7491.      bpt                            bne[.b] pcrel8
  7492.      bra[.w] pcrel16                beq[.w] pcrel16
  7493.      bra[.b] pcrel8                 beq[.b] pcrel8
  7494.      bt[.w] pcrel16                 bvc[.w] pcrel16
  7495.      bt[.b] pcrel8                  bvc[.b] pcrel8
  7496.      brn[.w] pcrel16                bvs[.w] pcrel16
  7497.      brn[.b] pcrel8                 bvs[.b] pcrel8
  7498.      bf[.w] pcrel16                 bpl[.w] pcrel16
  7499.      bf[.b] pcrel8                  bpl[.b] pcrel8
  7500.      bhi[.w] pcrel16                bmi[.w] pcrel16
  7501.      bhi[.b] pcrel8                 bmi[.b] pcrel8
  7502.      bls[.w] pcrel16                bge[.w] pcrel16
  7503.      bls[.b] pcrel8                 bge[.b] pcrel8
  7504.  
  7505.      blt[.w] pcrel16                mov[:g][.b] imm8,ea_mem
  7506.      blt[.b] pcrel8                 mov[:g][.w] imm16,ea_mem
  7507.      bgt[.w] pcrel16                movfpe[.b] ea,rd
  7508.      bgt[.b] pcrel8                 movtpe[.b] rs,ea_noimm
  7509.      ble[.w] pcrel16                mulxu sz ea,rd
  7510.      ble[.b] pcrel8                 neg sz ea
  7511.      bclr sz imm4,ea_noimm          nop
  7512.      bclr sz rs,ea_noimm            not sz ea
  7513.      bnot sz imm4,ea_noimm          or sz ea,rd
  7514.      bnot sz rs,ea_noimm            orc[.b] imm8,crb
  7515.      bset sz imm4,ea_noimm          orc[.w] imm16,sr
  7516.      bset sz rs,ea_noimm            pjmp abs24
  7517.      bsr[.b] pcrel8                 pjmp @rd
  7518.      bsr[.w] pcrel16                pjsr abs24
  7519.      btst sz imm4,ea_noimm          pjsr @rd
  7520.      btst sz rs,ea_noimm            prtd imm8
  7521.      clr sz ea                      prtd imm16
  7522.      cmp[:e][.b] imm8,rd            prts
  7523.      cmp[:i][.w] imm16,rd           rotl sz ea
  7524.      cmp[:g].b imm8,ea_noimm        rotr sz ea
  7525.      cmp[:g][.w] imm16,ea_noimm     rotxl sz ea
  7526.      Cmp[:g] sz ea,rd               rotxr sz ea
  7527.      dadd rs,rd                     rtd imm8
  7528.      divxu sz ea,rd                 rtd imm16
  7529.      dsub rs,rd                     rts
  7530.      exts[.b] rd                    scb/f rs,pcrel8
  7531.      extu[.b] rd                    scb/ne rs,pcrel8
  7532.      jmp @rd                        scb/eq rs,pcrel8
  7533.      jmp @(imm8,rd)                 shal sz ea
  7534.      jmp @(imm16,rd)                shar sz ea
  7535.      jmp abs16                      shll sz ea
  7536.      jsr @rd                        shlr sz ea
  7537.      jsr @(imm8,rd)                 sleep
  7538.      jsr @(imm16,rd)                stc[.b] crb,ea_noimm
  7539.      jsr abs16                      stc[.w] sr,ea_noimm
  7540.      ldm @sp+,(rlist)               stm (rlist),@-sp
  7541.      link fp,imm8                   sub sz ea,rd
  7542.      link fp,imm16                  subs sz ea,rd
  7543.      mov[:e][.b] imm8,rd            subx sz ea,rd
  7544.      mov[:i][.w] imm16,rd           swap[.b] rd
  7545.      mov[:l][.w] abs8,rd            tas[.b] ea
  7546.      mov[:l].b abs8,rd              trapa imm4
  7547.      mov[:s][.w] rs,abs8            trap/vs
  7548.      mov[:s].b rs,abs8              tst sz ea
  7549.      mov[:f][.w] @(disp8,fp),rd     unlk fp
  7550.      mov[:f][.w] rs,@(disp8,fp)     xch[.w] rs,rd
  7551.      mov[:f].b @(disp8,fp),rd       xor sz ea,rd
  7552.      mov[:f].b rs,@(disp8,fp)       xorc.b imm8,crb
  7553.      mov[:g] sz rs,ea_mem           xorc.w imm16,sr
  7554.      mov[:g] sz ea,rd
  7555.  
  7556. 
  7557. File: as.info,  Node: HPPA-Dependent,  Next: ESA/390-Dependent,  Prev: H8/500-Dependent,  Up: Machine Dependencies
  7558.  
  7559. 8.10 HPPA Dependent Features
  7560. ============================
  7561.  
  7562. * Menu:
  7563.  
  7564. * HPPA Notes::                Notes
  7565. * HPPA Options::              Options
  7566. * HPPA Syntax::               Syntax
  7567. * HPPA Floating Point::       Floating Point
  7568. * HPPA Directives::           HPPA Machine Directives
  7569. * HPPA Opcodes::              Opcodes
  7570.  
  7571. 
  7572. File: as.info,  Node: HPPA Notes,  Next: HPPA Options,  Up: HPPA-Dependent
  7573.  
  7574. 8.10.1 Notes
  7575. ------------
  7576.  
  7577. As a back end for GNU CC `as' has been throughly tested and should work
  7578. extremely well.  We have tested it only minimally on hand written
  7579. assembly code and no one has tested it much on the assembly output from
  7580. the HP compilers.
  7581.  
  7582.    The format of the debugging sections has changed since the original
  7583. `as' port (version 1.3X) was released; therefore, you must rebuild all
  7584. HPPA objects and libraries with the new assembler so that you can debug
  7585. the final executable.
  7586.  
  7587.    The HPPA `as' port generates a small subset of the relocations
  7588. available in the SOM and ELF object file formats.  Additional relocation
  7589. support will be added as it becomes necessary.
  7590.  
  7591. 
  7592. File: as.info,  Node: HPPA Options,  Next: HPPA Syntax,  Prev: HPPA Notes,  Up: HPPA-Dependent
  7593.  
  7594. 8.10.2 Options
  7595. --------------
  7596.  
  7597. `as' has no machine-dependent command-line options for the HPPA.
  7598.  
  7599. 
  7600. File: as.info,  Node: HPPA Syntax,  Next: HPPA Floating Point,  Prev: HPPA Options,  Up: HPPA-Dependent
  7601.  
  7602. 8.10.3 Syntax
  7603. -------------
  7604.  
  7605. The assembler syntax closely follows the HPPA instruction set reference
  7606. manual; assembler directives and general syntax closely follow the HPPA
  7607. assembly language reference manual, with a few noteworthy differences.
  7608.  
  7609.    First, a colon may immediately follow a label definition.  This is
  7610. simply for compatibility with how most assembly language programmers
  7611. write code.
  7612.  
  7613.    Some obscure expression parsing problems may affect hand written
  7614. code which uses the `spop' instructions, or code which makes significant
  7615. use of the `!' line separator.
  7616.  
  7617.    `as' is much less forgiving about missing arguments and other
  7618. similar oversights than the HP assembler.  `as' notifies you of missing
  7619. arguments as syntax errors; this is regarded as a feature, not a bug.
  7620.  
  7621.    Finally, `as' allows you to use an external symbol without
  7622. explicitly importing the symbol.  _Warning:_ in the future this will be
  7623. an error for HPPA targets.
  7624.  
  7625.    Special characters for HPPA targets include:
  7626.  
  7627.    `;' is the line comment character.
  7628.  
  7629.    `!' can be used instead of a newline to separate statements.
  7630.  
  7631.    Since `$' has no special meaning, you may use it in symbol names.
  7632.  
  7633. 
  7634. File: as.info,  Node: HPPA Floating Point,  Next: HPPA Directives,  Prev: HPPA Syntax,  Up: HPPA-Dependent
  7635.  
  7636. 8.10.4 Floating Point
  7637. ---------------------
  7638.  
  7639. The HPPA family uses IEEE floating-point numbers.
  7640.  
  7641. 
  7642. File: as.info,  Node: HPPA Directives,  Next: HPPA Opcodes,  Prev: HPPA Floating Point,  Up: HPPA-Dependent
  7643.  
  7644. 8.10.5 HPPA Assembler Directives
  7645. --------------------------------
  7646.  
  7647. `as' for the HPPA supports many additional directives for compatibility
  7648. with the native assembler.  This section describes them only briefly.
  7649. For detailed information on HPPA-specific assembler directives, see
  7650. `HP9000 Series 800 Assembly Language Reference Manual' (HP 92432-90001).
  7651.  
  7652.    `as' does _not_ support the following assembler directives described
  7653. in the HP manual:
  7654.  
  7655.      .endm           .liston
  7656.      .enter          .locct
  7657.      .leave          .macro
  7658.      .listoff
  7659.  
  7660.    Beyond those implemented for compatibility, `as' supports one
  7661. additional assembler directive for the HPPA: `.param'.  It conveys
  7662. register argument locations for static functions.  Its syntax closely
  7663. follows the `.export' directive.
  7664.  
  7665.    These are the additional directives in `as' for the HPPA:
  7666.  
  7667. `.block N'
  7668. `.blockz N'
  7669.      Reserve N bytes of storage, and initialize them to zero.
  7670.  
  7671. `.call'
  7672.      Mark the beginning of a procedure call.  Only the special case
  7673.      with _no arguments_ is allowed.
  7674.  
  7675. `.callinfo [ PARAM=VALUE, ... ]  [ FLAG, ... ]'
  7676.      Specify a number of parameters and flags that define the
  7677.      environment for a procedure.
  7678.  
  7679.      PARAM may be any of `frame' (frame size), `entry_gr' (end of
  7680.      general register range), `entry_fr' (end of float register range),
  7681.      `entry_sr' (end of space register range).
  7682.  
  7683.      The values for FLAG are `calls' or `caller' (proc has
  7684.      subroutines), `no_calls' (proc does not call subroutines),
  7685.      `save_rp' (preserve return pointer), `save_sp' (proc preserves
  7686.      stack pointer), `no_unwind' (do not unwind this proc), `hpux_int'
  7687.      (proc is interrupt routine).
  7688.  
  7689. `.code'
  7690.      Assemble into the standard section called `$TEXT$', subsection
  7691.      `$CODE$'.
  7692.  
  7693. `.copyright "STRING"'
  7694.      In the SOM object format, insert STRING into the object code,
  7695.      marked as a copyright string.
  7696.  
  7697. `.copyright "STRING"'
  7698.      In the ELF object format, insert STRING into the object code,
  7699.      marked as a version string.
  7700.  
  7701. `.enter'
  7702.      Not yet supported; the assembler rejects programs containing this
  7703.      directive.
  7704.  
  7705. `.entry'
  7706.      Mark the beginning of a procedure.
  7707.  
  7708. `.exit'
  7709.      Mark the end of a procedure.
  7710.  
  7711. `.export NAME [ ,TYP ]  [ ,PARAM=R ]'
  7712.      Make a procedure NAME available to callers.  TYP, if present, must
  7713.      be one of `absolute', `code' (ELF only, not SOM), `data', `entry',
  7714.      `data', `entry', `millicode', `plabel', `pri_prog', or `sec_prog'.
  7715.  
  7716.      PARAM, if present, provides either relocation information for the
  7717.      procedure arguments and result, or a privilege level.  PARAM may be
  7718.      `argwN' (where N ranges from `0' to `3', and indicates one of four
  7719.      one-word arguments); `rtnval' (the procedure's result); or
  7720.      `priv_lev' (privilege level).  For arguments or the result, R
  7721.      specifies how to relocate, and must be one of `no' (not
  7722.      relocatable), `gr' (argument is in general register), `fr' (in
  7723.      floating point register), or `fu' (upper half of float register).
  7724.      For `priv_lev', R is an integer.
  7725.  
  7726. `.half N'
  7727.      Define a two-byte integer constant N; synonym for the portable
  7728.      `as' directive `.short'.
  7729.  
  7730. `.import NAME [ ,TYP ]'
  7731.      Converse of `.export'; make a procedure available to call.  The
  7732.      arguments use the same conventions as the first two arguments for
  7733.      `.export'.
  7734.  
  7735. `.label NAME'
  7736.      Define NAME as a label for the current assembly location.
  7737.  
  7738. `.leave'
  7739.      Not yet supported; the assembler rejects programs containing this
  7740.      directive.
  7741.  
  7742. `.origin LC'
  7743.      Advance location counter to LC. Synonym for the `as' portable
  7744.      directive `.org'.
  7745.  
  7746. `.param NAME [ ,TYP ]  [ ,PARAM=R ]'
  7747.      Similar to `.export', but used for static procedures.
  7748.  
  7749. `.proc'
  7750.      Use preceding the first statement of a procedure.
  7751.  
  7752. `.procend'
  7753.      Use following the last statement of a procedure.
  7754.  
  7755. `LABEL .reg EXPR'
  7756.      Synonym for `.equ'; define LABEL with the absolute expression EXPR
  7757.      as its value.
  7758.  
  7759. `.space SECNAME [ ,PARAMS ]'
  7760.      Switch to section SECNAME, creating a new section by that name if
  7761.      necessary.  You may only use PARAMS when creating a new section,
  7762.      not when switching to an existing one.  SECNAME may identify a
  7763.      section by number rather than by name.
  7764.  
  7765.      If specified, the list PARAMS declares attributes of the section,
  7766.      identified by keywords.  The keywords recognized are `spnum=EXP'
  7767.      (identify this section by the number EXP, an absolute expression),
  7768.      `sort=EXP' (order sections according to this sort key when linking;
  7769.      EXP is an absolute expression), `unloadable' (section contains no
  7770.      loadable data), `notdefined' (this section defined elsewhere), and
  7771.      `private' (data in this section not available to other programs).
  7772.  
  7773. `.spnum SECNAM'
  7774.      Allocate four bytes of storage, and initialize them with the
  7775.      section number of the section named SECNAM.  (You can define the
  7776.      section number with the HPPA `.space' directive.)
  7777.  
  7778. `.string "STR"'
  7779.      Copy the characters in the string STR to the object file.  *Note
  7780.      Strings: Strings, for information on escape sequences you can use
  7781.      in `as' strings.
  7782.  
  7783.      _Warning!_ The HPPA version of `.string' differs from the usual
  7784.      `as' definition: it does _not_ write a zero byte after copying STR.
  7785.  
  7786. `.stringz "STR"'
  7787.      Like `.string', but appends a zero byte after copying STR to object
  7788.      file.
  7789.  
  7790. `.subspa NAME [ ,PARAMS ]'
  7791. `.nsubspa NAME [ ,PARAMS ]'
  7792.      Similar to `.space', but selects a subsection NAME within the
  7793.      current section.  You may only specify PARAMS when you create a
  7794.      subsection (in the first instance of `.subspa' for this NAME).
  7795.  
  7796.      If specified, the list PARAMS declares attributes of the
  7797.      subsection, identified by keywords.  The keywords recognized are
  7798.      `quad=EXPR' ("quadrant" for this subsection), `align=EXPR'
  7799.      (alignment for beginning of this subsection; a power of two),
  7800.      `access=EXPR' (value for "access rights" field), `sort=EXPR'
  7801.      (sorting order for this subspace in link), `code_only' (subsection
  7802.      contains only code), `unloadable' (subsection cannot be loaded
  7803.      into memory), `comdat' (subsection is comdat), `common'
  7804.      (subsection is common block), `dup_comm' (subsection may have
  7805.      duplicate names), or `zero' (subsection is all zeros, do not write
  7806.      in object file).
  7807.  
  7808.      `.nsubspa' always creates a new subspace with the given name, even
  7809.      if one with the same name already exists.
  7810.  
  7811.      `comdat', `common' and `dup_comm' can be used to implement various
  7812.      flavors of one-only support when using the SOM linker.  The SOM
  7813.      linker only supports specific combinations of these flags.  The
  7814.      details are not documented.  A brief description is provided here.
  7815.  
  7816.      `comdat' provides a form of linkonce support.  It is useful for
  7817.      both code and data subspaces.  A `comdat' subspace has a key symbol
  7818.      marked by the `is_comdat' flag or `ST_COMDAT'.  Only the first
  7819.      subspace for any given key is selected.  The key symbol becomes
  7820.      universal in shared links.  This is similar to the behavior of
  7821.      `secondary_def' symbols.
  7822.  
  7823.      `common' provides Fortran named common support.  It is only useful
  7824.      for data subspaces.  Symbols with the flag `is_common' retain this
  7825.      flag in shared links.  Referencing a `is_common' symbol in a shared
  7826.      library from outside the library doesn't work.  Thus, `is_common'
  7827.      symbols must be output whenever they are needed.
  7828.  
  7829.      `common' and `dup_comm' together provide Cobol common support.
  7830.      The subspaces in this case must all be the same length.
  7831.      Otherwise, this support is similar to the Fortran common support.
  7832.  
  7833.      `dup_comm' by itself provides a type of one-only support for code.
  7834.      Only the first `dup_comm' subspace is selected.  There is a rather
  7835.      complex algorithm to compare subspaces.  Code symbols marked with
  7836.      the `dup_common' flag are hidden.  This support was intended for
  7837.      "C++ duplicate inlines".
  7838.  
  7839.      A simplified technique is used to mark the flags of symbols based
  7840.      on the flags of their subspace.  A symbol with the scope
  7841.      SS_UNIVERSAL and type ST_ENTRY, ST_CODE or ST_DATA is marked with
  7842.      the corresponding settings of `comdat', `common' and `dup_comm'
  7843.      from the subspace, respectively.  This avoids having to introduce
  7844.      additional directives to mark these symbols.  The HP assembler
  7845.      sets `is_common' from `common'.  However, it doesn't set the
  7846.      `dup_common' from `dup_comm'.  It doesn't have `comdat' support.
  7847.  
  7848. `.version "STR"'
  7849.      Write STR as version identifier in object code.
  7850.  
  7851. 
  7852. File: as.info,  Node: HPPA Opcodes,  Prev: HPPA Directives,  Up: HPPA-Dependent
  7853.  
  7854. 8.10.6 Opcodes
  7855. --------------
  7856.  
  7857. For detailed information on the HPPA machine instruction set, see
  7858. `PA-RISC Architecture and Instruction Set Reference Manual' (HP
  7859. 09740-90039).
  7860.  
  7861. 
  7862. File: as.info,  Node: ESA/390-Dependent,  Next: i386-Dependent,  Prev: HPPA-Dependent,  Up: Machine Dependencies
  7863.  
  7864. 8.11 ESA/390 Dependent Features
  7865. ===============================
  7866.  
  7867. * Menu:
  7868.  
  7869. * ESA/390 Notes::                Notes
  7870. * ESA/390 Options::              Options
  7871. * ESA/390 Syntax::               Syntax
  7872. * ESA/390 Floating Point::       Floating Point
  7873. * ESA/390 Directives::           ESA/390 Machine Directives
  7874. * ESA/390 Opcodes::              Opcodes
  7875.  
  7876. 
  7877. File: as.info,  Node: ESA/390 Notes,  Next: ESA/390 Options,  Up: ESA/390-Dependent
  7878.  
  7879. 8.11.1 Notes
  7880. ------------
  7881.  
  7882. The ESA/390 `as' port is currently intended to be a back-end for the
  7883. GNU CC compiler.  It is not HLASM compatible, although it does support
  7884. a subset of some of the HLASM directives.  The only supported binary
  7885. file format is ELF; none of the usual MVS/VM/OE/USS object file
  7886. formats, such as ESD or XSD, are supported.
  7887.  
  7888.    When used with the GNU CC compiler, the ESA/390 `as' will produce
  7889. correct, fully relocated, functional binaries, and has been used to
  7890. compile and execute large projects.  However, many aspects should still
  7891. be considered experimental; these include shared library support,
  7892. dynamically loadable objects, and any relocation other than the 31-bit
  7893. relocation.
  7894.  
  7895. 
  7896. File: as.info,  Node: ESA/390 Options,  Next: ESA/390 Syntax,  Prev: ESA/390 Notes,  Up: ESA/390-Dependent
  7897.  
  7898. 8.11.2 Options
  7899. --------------
  7900.  
  7901. `as' has no machine-dependent command-line options for the ESA/390.
  7902.  
  7903. 
  7904. File: as.info,  Node: ESA/390 Syntax,  Next: ESA/390 Floating Point,  Prev: ESA/390 Options,  Up: ESA/390-Dependent
  7905.  
  7906. 8.11.3 Syntax
  7907. -------------
  7908.  
  7909. The opcode/operand syntax follows the ESA/390 Principles of Operation
  7910. manual; assembler directives and general syntax are loosely based on the
  7911. prevailing AT&T/SVR4/ELF/Solaris style notation.  HLASM-style directives
  7912. are _not_ supported for the most part, with the exception of those
  7913. described herein.
  7914.  
  7915.    A leading dot in front of directives is optional, and the case of
  7916. directives is ignored; thus for example, .using and USING have the same
  7917. effect.
  7918.  
  7919.    A colon may immediately follow a label definition.  This is simply
  7920. for compatibility with how most assembly language programmers write
  7921. code.
  7922.  
  7923.    `#' is the line comment character.
  7924.  
  7925.    `;' can be used instead of a newline to separate statements.
  7926.  
  7927.    Since `$' has no special meaning, you may use it in symbol names.
  7928.  
  7929.    Registers can be given the symbolic names r0..r15, fp0, fp2, fp4,
  7930. fp6.  By using thesse symbolic names, `as' can detect simple syntax
  7931. errors. The name rarg or r.arg is a synonym for r11, rtca or r.tca for
  7932. r12, sp, r.sp, dsa r.dsa for r13, lr or r.lr for r14, rbase or r.base
  7933. for r3 and rpgt or r.pgt for r4.
  7934.  
  7935.    `*' is the current location counter.  Unlike `.' it is always
  7936. relative to the last USING directive.  Note that this means that
  7937. expressions cannot use multiplication, as any occurrence of `*' will be
  7938. interpreted as a location counter.
  7939.  
  7940.    All labels are relative to the last USING.  Thus, branches to a label
  7941. always imply the use of base+displacement.
  7942.  
  7943.    Many of the usual forms of address constants / address literals are
  7944. supported.  Thus,
  7945.          .using    *,r3
  7946.          L    r15,=A(some_routine)
  7947.          LM    r6,r7,=V(some_longlong_extern)
  7948.          A    r1,=F'12'
  7949.          AH    r0,=H'42'
  7950.          ME    r6,=E'3.1416'
  7951.          MD    r6,=D'3.14159265358979'
  7952.          O    r6,=XL4'cacad0d0'
  7953.          .ltorg
  7954.    should all behave as expected: that is, an entry in the literal pool
  7955. will be created (or reused if it already exists), and the instruction
  7956. operands will be the displacement into the literal pool using the
  7957. current base register (as last declared with the `.using' directive).
  7958.  
  7959. 
  7960. File: as.info,  Node: ESA/390 Floating Point,  Next: ESA/390 Directives,  Prev: ESA/390 Syntax,  Up: ESA/390-Dependent
  7961.  
  7962. 8.11.4 Floating Point
  7963. ---------------------
  7964.  
  7965. The assembler generates only IEEE floating-point numbers.  The older
  7966. floating point formats are not supported.
  7967.  
  7968. 
  7969. File: as.info,  Node: ESA/390 Directives,  Next: ESA/390 Opcodes,  Prev: ESA/390 Floating Point,  Up: ESA/390-Dependent
  7970.  
  7971. 8.11.5 ESA/390 Assembler Directives
  7972. -----------------------------------
  7973.  
  7974. `as' for the ESA/390 supports all of the standard ELF/SVR4 assembler
  7975. directives that are documented in the main part of this documentation.
  7976. Several additional directives are supported in order to implement the
  7977. ESA/390 addressing model.  The most important of these are `.using' and
  7978. `.ltorg'
  7979.  
  7980.    These are the additional directives in `as' for the ESA/390:
  7981.  
  7982. `.dc'
  7983.      A small subset of the usual DC directive is supported.
  7984.  
  7985. `.drop REGNO'
  7986.      Stop using REGNO as the base register.  The REGNO must have been
  7987.      previously declared with a `.using' directive in the same section
  7988.      as the current section.
  7989.  
  7990. `.ebcdic STRING'
  7991.      Emit the EBCDIC equivalent of the indicated string.  The emitted
  7992.      string will be null terminated.  Note that the directives
  7993.      `.string' etc. emit ascii strings by default.
  7994.  
  7995. `EQU'
  7996.      The standard HLASM-style EQU directive is not supported; however,
  7997.      the standard `as' directive .equ can be used to the same effect.
  7998.  
  7999. `.ltorg'
  8000.      Dump the literal pool accumulated so far; begin a new literal pool.
  8001.      The literal pool will be written in the current section; in order
  8002.      to generate correct assembly, a `.using' must have been previously
  8003.      specified in the same section.
  8004.  
  8005. `.using EXPR,REGNO'
  8006.      Use REGNO as the base register for all subsequent RX, RS, and SS
  8007.      form instructions. The EXPR will be evaluated to obtain the base
  8008.      address; usually, EXPR will merely be `*'.
  8009.  
  8010.      This assembler allows two `.using' directives to be simultaneously
  8011.      outstanding, one in the `.text' section, and one in another section
  8012.      (typically, the `.data' section).  This feature allows dynamically
  8013.      loaded objects to be implemented in a relatively straightforward
  8014.      way.  A `.using' directive must always be specified in the `.text'
  8015.      section; this will specify the base register that will be used for
  8016.      branches in the `.text' section.  A second `.using' may be
  8017.      specified in another section; this will specify the base register
  8018.      that is used for non-label address literals.  When a second
  8019.      `.using' is specified, then the subsequent `.ltorg' must be put in
  8020.      the same section; otherwise an error will result.
  8021.  
  8022.      Thus, for example, the following code uses `r3' to address branch
  8023.      targets and `r4' to address the literal pool, which has been
  8024.      written to the `.data' section.  The is, the constants
  8025.      `=A(some_routine)', `=H'42'' and `=E'3.1416'' will all appear in
  8026.      the `.data' section.
  8027.  
  8028.           .data
  8029.               .using  LITPOOL,r4
  8030.           .text
  8031.               BASR    r3,0
  8032.               .using    *,r3
  8033.                   B       START
  8034.               .long    LITPOOL
  8035.           START:
  8036.               L    r4,4(,r3)
  8037.               L    r15,=A(some_routine)
  8038.               LTR    r15,r15
  8039.               BNE    LABEL
  8040.               AH    r0,=H'42'
  8041.           LABEL:
  8042.               ME    r6,=E'3.1416'
  8043.           .data
  8044.           LITPOOL:
  8045.               .ltorg
  8046.  
  8047.      Note that this dual-`.using' directive semantics extends and is
  8048.      not compatible with HLASM semantics.  Note that this assembler
  8049.      directive does not support the full range of HLASM semantics.
  8050.  
  8051.  
  8052. 
  8053. File: as.info,  Node: ESA/390 Opcodes,  Prev: ESA/390 Directives,  Up: ESA/390-Dependent
  8054.  
  8055. 8.11.6 Opcodes
  8056. --------------
  8057.  
  8058. For detailed information on the ESA/390 machine instruction set, see
  8059. `ESA/390 Principles of Operation' (IBM Publication Number DZ9AR004).
  8060.  
  8061. 
  8062. File: as.info,  Node: i386-Dependent,  Next: i860-Dependent,  Prev: ESA/390-Dependent,  Up: Machine Dependencies
  8063.  
  8064. 8.12 80386 Dependent Features
  8065. =============================
  8066.  
  8067.    The i386 version `as' supports both the original Intel 386
  8068. architecture in both 16 and 32-bit mode as well as AMD x86-64
  8069. architecture extending the Intel architecture to 64-bits.
  8070.  
  8071. * Menu:
  8072.  
  8073. * i386-Options::                Options
  8074. * i386-Syntax::                 AT&T Syntax versus Intel Syntax
  8075. * i386-Mnemonics::              Instruction Naming
  8076. * i386-Regs::                   Register Naming
  8077. * i386-Prefixes::               Instruction Prefixes
  8078. * i386-Memory::                 Memory References
  8079. * i386-Jumps::                  Handling of Jump Instructions
  8080. * i386-Float::                  Floating Point
  8081. * i386-SIMD::                   Intel's MMX and AMD's 3DNow! SIMD Operations
  8082. * i386-16bit::                  Writing 16-bit Code
  8083. * i386-Arch::                   Specifying an x86 CPU architecture
  8084. * i386-Bugs::                   AT&T Syntax bugs
  8085. * i386-Notes::                  Notes
  8086.  
  8087. 
  8088. File: as.info,  Node: i386-Options,  Next: i386-Syntax,  Up: i386-Dependent
  8089.  
  8090. 8.12.1 Options
  8091. --------------
  8092.  
  8093. The i386 version of `as' has a few machine dependent options:
  8094.  
  8095. `--32 | --64'
  8096.      Select the word size, either 32 bits or 64 bits. Selecting 32-bit
  8097.      implies Intel i386 architecture, while 64-bit implies AMD x86-64
  8098.      architecture.
  8099.  
  8100.      These options are only available with the ELF object file format,
  8101.      and require that the necessary BFD support has been included (on a
  8102.      32-bit platform you have to add -enable-64-bit-bfd to configure
  8103.      enable 64-bit usage and use x86-64 as target platform).
  8104.  
  8105. `-n'
  8106.      By default, x86 GAS replaces multiple nop instructions used for
  8107.      alignment within code sections with multi-byte nop instructions
  8108.      such as leal 0(%esi,1),%esi.  This switch disables the
  8109.      optimization.
  8110.  
  8111. 
  8112. File: as.info,  Node: i386-Syntax,  Next: i386-Mnemonics,  Prev: i386-Options,  Up: i386-Dependent
  8113.  
  8114. 8.12.2 AT&T Syntax versus Intel Syntax
  8115. --------------------------------------
  8116.  
  8117. `as' now supports assembly using Intel assembler syntax.
  8118. `.intel_syntax' selects Intel mode, and `.att_syntax' switches back to
  8119. the usual AT&T mode for compatibility with the output of `gcc'.  Either
  8120. of these directives may have an optional argument, `prefix', or
  8121. `noprefix' specifying whether registers require a `%' prefix.  AT&T
  8122. System V/386 assembler syntax is quite different from Intel syntax.  We
  8123. mention these differences because almost all 80386 documents use Intel
  8124. syntax.  Notable differences between the two syntaxes are:
  8125.  
  8126.    * AT&T immediate operands are preceded by `$'; Intel immediate
  8127.      operands are undelimited (Intel `push 4' is AT&T `pushl $4').
  8128.      AT&T register operands are preceded by `%'; Intel register operands
  8129.      are undelimited.  AT&T absolute (as opposed to PC relative)
  8130.      jump/call operands are prefixed by `*'; they are undelimited in
  8131.      Intel syntax.
  8132.  
  8133.    * AT&T and Intel syntax use the opposite order for source and
  8134.      destination operands.  Intel `add eax, 4' is `addl $4, %eax'.  The
  8135.      `source, dest' convention is maintained for compatibility with
  8136.      previous Unix assemblers.  Note that instructions with more than
  8137.      one source operand, such as the `enter' instruction, do _not_ have
  8138.      reversed order.  *Note i386-Bugs::.
  8139.  
  8140.    * In AT&T syntax the size of memory operands is determined from the
  8141.      last character of the instruction mnemonic.  Mnemonic suffixes of
  8142.      `b', `w', `l' and `q' specify byte (8-bit), word (16-bit), long
  8143.      (32-bit) and quadruple word (64-bit) memory references.  Intel
  8144.      syntax accomplishes this by prefixing memory operands (_not_ the
  8145.      instruction mnemonics) with `byte ptr', `word ptr', `dword ptr'
  8146.      and `qword ptr'.  Thus, Intel `mov al, byte ptr FOO' is `movb FOO,
  8147.      %al' in AT&T syntax.
  8148.  
  8149.    * Immediate form long jumps and calls are `lcall/ljmp $SECTION,
  8150.      $OFFSET' in AT&T syntax; the Intel syntax is `call/jmp far
  8151.      SECTION:OFFSET'.  Also, the far return instruction is `lret
  8152.      $STACK-ADJUST' in AT&T syntax; Intel syntax is `ret far
  8153.      STACK-ADJUST'.
  8154.  
  8155.    * The AT&T assembler does not provide support for multiple section
  8156.      programs.  Unix style systems expect all programs to be single
  8157.      sections.
  8158.  
  8159. 
  8160. File: as.info,  Node: i386-Mnemonics,  Next: i386-Regs,  Prev: i386-Syntax,  Up: i386-Dependent
  8161.  
  8162. 8.12.3 Instruction Naming
  8163. -------------------------
  8164.  
  8165. Instruction mnemonics are suffixed with one character modifiers which
  8166. specify the size of operands.  The letters `b', `w', `l' and `q'
  8167. specify byte, word, long and quadruple word operands.  If no suffix is
  8168. specified by an instruction then `as' tries to fill in the missing
  8169. suffix based on the destination register operand (the last one by
  8170. convention).  Thus, `mov %ax, %bx' is equivalent to `movw %ax, %bx';
  8171. also, `mov $1, %bx' is equivalent to `movw $1, bx'.  Note that this is
  8172. incompatible with the AT&T Unix assembler which assumes that a missing
  8173. mnemonic suffix implies long operand size.  (This incompatibility does
  8174. not affect compiler output since compilers always explicitly specify
  8175. the mnemonic suffix.)
  8176.  
  8177.    Almost all instructions have the same names in AT&T and Intel format.
  8178. There are a few exceptions.  The sign extend and zero extend
  8179. instructions need two sizes to specify them.  They need a size to
  8180. sign/zero extend _from_ and a size to zero extend _to_.  This is
  8181. accomplished by using two instruction mnemonic suffixes in AT&T syntax.
  8182. Base names for sign extend and zero extend are `movs...' and `movz...'
  8183. in AT&T syntax (`movsx' and `movzx' in Intel syntax).  The instruction
  8184. mnemonic suffixes are tacked on to this base name, the _from_ suffix
  8185. before the _to_ suffix.  Thus, `movsbl %al, %edx' is AT&T syntax for
  8186. "move sign extend _from_ %al _to_ %edx."  Possible suffixes, thus, are
  8187. `bl' (from byte to long), `bw' (from byte to word), `wl' (from word to
  8188. long), `bq' (from byte to quadruple word), `wq' (from word to quadruple
  8189. word), and `lq' (from long to quadruple word).
  8190.  
  8191.    The Intel-syntax conversion instructions
  8192.  
  8193.    * `cbw' -- sign-extend byte in `%al' to word in `%ax',
  8194.  
  8195.    * `cwde' -- sign-extend word in `%ax' to long in `%eax',
  8196.  
  8197.    * `cwd' -- sign-extend word in `%ax' to long in `%dx:%ax',
  8198.  
  8199.    * `cdq' -- sign-extend dword in `%eax' to quad in `%edx:%eax',
  8200.  
  8201.    * `cdqe' -- sign-extend dword in `%eax' to quad in `%rax' (x86-64
  8202.      only),
  8203.  
  8204.    * `cqo' -- sign-extend quad in `%rax' to octuple in `%rdx:%rax'
  8205.      (x86-64 only),
  8206.  
  8207. are called `cbtw', `cwtl', `cwtd', `cltd', `cltq', and `cqto' in AT&T
  8208. naming.  `as' accepts either naming for these instructions.
  8209.  
  8210.    Far call/jump instructions are `lcall' and `ljmp' in AT&T syntax,
  8211. but are `call far' and `jump far' in Intel convention.
  8212.  
  8213. 
  8214. File: as.info,  Node: i386-Regs,  Next: i386-Prefixes,  Prev: i386-Mnemonics,  Up: i386-Dependent
  8215.  
  8216. 8.12.4 Register Naming
  8217. ----------------------
  8218.  
  8219. Register operands are always prefixed with `%'.  The 80386 registers
  8220. consist of
  8221.  
  8222.    * the 8 32-bit registers `%eax' (the accumulator), `%ebx', `%ecx',
  8223.      `%edx', `%edi', `%esi', `%ebp' (the frame pointer), and `%esp'
  8224.      (the stack pointer).
  8225.  
  8226.    * the 8 16-bit low-ends of these: `%ax', `%bx', `%cx', `%dx', `%di',
  8227.      `%si', `%bp', and `%sp'.
  8228.  
  8229.    * the 8 8-bit registers: `%ah', `%al', `%bh', `%bl', `%ch', `%cl',
  8230.      `%dh', and `%dl' (These are the high-bytes and low-bytes of `%ax',
  8231.      `%bx', `%cx', and `%dx')
  8232.  
  8233.    * the 6 section registers `%cs' (code section), `%ds' (data
  8234.      section), `%ss' (stack section), `%es', `%fs', and `%gs'.
  8235.  
  8236.    * the 3 processor control registers `%cr0', `%cr2', and `%cr3'.
  8237.  
  8238.    * the 6 debug registers `%db0', `%db1', `%db2', `%db3', `%db6', and
  8239.      `%db7'.
  8240.  
  8241.    * the 2 test registers `%tr6' and `%tr7'.
  8242.  
  8243.    * the 8 floating point register stack `%st' or equivalently
  8244.      `%st(0)', `%st(1)', `%st(2)', `%st(3)', `%st(4)', `%st(5)',
  8245.      `%st(6)', and `%st(7)'.  These registers are overloaded by 8 MMX
  8246.      registers `%mm0', `%mm1', `%mm2', `%mm3', `%mm4', `%mm5', `%mm6'
  8247.      and `%mm7'.
  8248.  
  8249.    * the 8 SSE registers registers `%xmm0', `%xmm1', `%xmm2', `%xmm3',
  8250.      `%xmm4', `%xmm5', `%xmm6' and `%xmm7'.
  8251.  
  8252.    The AMD x86-64 architecture extends the register set by:
  8253.  
  8254.    * enhancing the 8 32-bit registers to 64-bit: `%rax' (the
  8255.      accumulator), `%rbx', `%rcx', `%rdx', `%rdi', `%rsi', `%rbp' (the
  8256.      frame pointer), `%rsp' (the stack pointer)
  8257.  
  8258.    * the 8 extended registers `%r8'-`%r15'.
  8259.  
  8260.    * the 8 32-bit low ends of the extended registers: `%r8d'-`%r15d'
  8261.  
  8262.    * the 8 16-bit low ends of the extended registers: `%r8w'-`%r15w'
  8263.  
  8264.    * the 8 8-bit low ends of the extended registers: `%r8b'-`%r15b'
  8265.  
  8266.    * the 4 8-bit registers: `%sil', `%dil', `%bpl', `%spl'.
  8267.  
  8268.    * the 8 debug registers: `%db8'-`%db15'.
  8269.  
  8270.    * the 8 SSE registers: `%xmm8'-`%xmm15'.
  8271.  
  8272. 
  8273. File: as.info,  Node: i386-Prefixes,  Next: i386-Memory,  Prev: i386-Regs,  Up: i386-Dependent
  8274.  
  8275. 8.12.5 Instruction Prefixes
  8276. ---------------------------
  8277.  
  8278. Instruction prefixes are used to modify the following instruction.  They
  8279. are used to repeat string instructions, to provide section overrides, to
  8280. perform bus lock operations, and to change operand and address sizes.
  8281. (Most instructions that normally operate on 32-bit operands will use
  8282. 16-bit operands if the instruction has an "operand size" prefix.)
  8283. Instruction prefixes are best written on the same line as the
  8284. instruction they act upon. For example, the `scas' (scan string)
  8285. instruction is repeated with:
  8286.  
  8287.              repne scas %es:(%edi),%al
  8288.  
  8289.    You may also place prefixes on the lines immediately preceding the
  8290. instruction, but this circumvents checks that `as' does with prefixes,
  8291. and will not work with all prefixes.
  8292.  
  8293.    Here is a list of instruction prefixes:
  8294.  
  8295.    * Section override prefixes `cs', `ds', `ss', `es', `fs', `gs'.
  8296.      These are automatically added by specifying using the
  8297.      SECTION:MEMORY-OPERAND form for memory references.
  8298.  
  8299.    * Operand/Address size prefixes `data16' and `addr16' change 32-bit
  8300.      operands/addresses into 16-bit operands/addresses, while `data32'
  8301.      and `addr32' change 16-bit ones (in a `.code16' section) into
  8302.      32-bit operands/addresses.  These prefixes _must_ appear on the
  8303.      same line of code as the instruction they modify. For example, in
  8304.      a 16-bit `.code16' section, you might write:
  8305.  
  8306.                   addr32 jmpl *(%ebx)
  8307.  
  8308.    * The bus lock prefix `lock' inhibits interrupts during execution of
  8309.      the instruction it precedes.  (This is only valid with certain
  8310.      instructions; see a 80386 manual for details).
  8311.  
  8312.    * The wait for coprocessor prefix `wait' waits for the coprocessor to
  8313.      complete the current instruction.  This should never be needed for
  8314.      the 80386/80387 combination.
  8315.  
  8316.    * The `rep', `repe', and `repne' prefixes are added to string
  8317.      instructions to make them repeat `%ecx' times (`%cx' times if the
  8318.      current address size is 16-bits).  
  8319.  
  8320.    * The `rex' family of prefixes is used by x86-64 to encode
  8321.      extensions to i386 instruction set.  The `rex' prefix has four
  8322.      bits -- an operand size overwrite (`64') used to change operand
  8323.      size from 32-bit to 64-bit and X, Y and Z extensions bits used to
  8324.      extend the register set.
  8325.  
  8326.      You may write the `rex' prefixes directly. The `rex64xyz'
  8327.      instruction emits `rex' prefix with all the bits set.  By omitting
  8328.      the `64', `x', `y' or `z' you may write other prefixes as well.
  8329.      Normally, there is no need to write the prefixes explicitly, since
  8330.      gas will automatically generate them based on the instruction
  8331.      operands.
  8332.  
  8333. 
  8334. File: as.info,  Node: i386-Memory,  Next: i386-Jumps,  Prev: i386-Prefixes,  Up: i386-Dependent
  8335.  
  8336. 8.12.6 Memory References
  8337. ------------------------
  8338.  
  8339. An Intel syntax indirect memory reference of the form
  8340.  
  8341.      SECTION:[BASE + INDEX*SCALE + DISP]
  8342.  
  8343. is translated into the AT&T syntax
  8344.  
  8345.      SECTION:DISP(BASE, INDEX, SCALE)
  8346.  
  8347. where BASE and INDEX are the optional 32-bit base and index registers,
  8348. DISP is the optional displacement, and SCALE, taking the values 1, 2,
  8349. 4, and 8, multiplies INDEX to calculate the address of the operand.  If
  8350. no SCALE is specified, SCALE is taken to be 1.  SECTION specifies the
  8351. optional section register for the memory operand, and may override the
  8352. default section register (see a 80386 manual for section register
  8353. defaults). Note that section overrides in AT&T syntax _must_ be
  8354. preceded by a `%'.  If you specify a section override which coincides
  8355. with the default section register, `as' does _not_ output any section
  8356. register override prefixes to assemble the given instruction.  Thus,
  8357. section overrides can be specified to emphasize which section register
  8358. is used for a given memory operand.
  8359.  
  8360.    Here are some examples of Intel and AT&T style memory references:
  8361.  
  8362. AT&T: `-4(%ebp)', Intel:  `[ebp - 4]'
  8363.      BASE is `%ebp'; DISP is `-4'. SECTION is missing, and the default
  8364.      section is used (`%ss' for addressing with `%ebp' as the base
  8365.      register).  INDEX, SCALE are both missing.
  8366.  
  8367. AT&T: `foo(,%eax,4)', Intel: `[foo + eax*4]'
  8368.      INDEX is `%eax' (scaled by a SCALE 4); DISP is `foo'.  All other
  8369.      fields are missing.  The section register here defaults to `%ds'.
  8370.  
  8371. AT&T: `foo(,1)'; Intel `[foo]'
  8372.      This uses the value pointed to by `foo' as a memory operand.  Note
  8373.      that BASE and INDEX are both missing, but there is only _one_ `,'.
  8374.      This is a syntactic exception.
  8375.  
  8376. AT&T: `%gs:foo'; Intel `gs:foo'
  8377.      This selects the contents of the variable `foo' with section
  8378.      register SECTION being `%gs'.
  8379.  
  8380.    Absolute (as opposed to PC relative) call and jump operands must be
  8381. prefixed with `*'.  If no `*' is specified, `as' always chooses PC
  8382. relative addressing for jump/call labels.
  8383.  
  8384.    Any instruction that has a memory operand, but no register operand,
  8385. _must_ specify its size (byte, word, long, or quadruple) with an
  8386. instruction mnemonic suffix (`b', `w', `l' or `q', respectively).
  8387.  
  8388.    The x86-64 architecture adds an RIP (instruction pointer relative)
  8389. addressing.  This addressing mode is specified by using `rip' as a base
  8390. register.  Only constant offsets are valid. For example:
  8391.  
  8392. AT&T: `1234(%rip)', Intel: `[rip + 1234]'
  8393.      Points to the address 1234 bytes past the end of the current
  8394.      instruction.
  8395.  
  8396. AT&T: `symbol(%rip)', Intel: `[rip + symbol]'
  8397.      Points to the `symbol' in RIP relative way, this is shorter than
  8398.      the default absolute addressing.
  8399.  
  8400.    Other addressing modes remain unchanged in x86-64 architecture,
  8401. except registers used are 64-bit instead of 32-bit.
  8402.  
  8403. 
  8404. File: as.info,  Node: i386-Jumps,  Next: i386-Float,  Prev: i386-Memory,  Up: i386-Dependent
  8405.  
  8406. 8.12.7 Handling of Jump Instructions
  8407. ------------------------------------
  8408.  
  8409. Jump instructions are always optimized to use the smallest possible
  8410. displacements.  This is accomplished by using byte (8-bit) displacement
  8411. jumps whenever the target is sufficiently close.  If a byte displacement
  8412. is insufficient a long displacement is used.  We do not support word
  8413. (16-bit) displacement jumps in 32-bit mode (i.e. prefixing the jump
  8414. instruction with the `data16' instruction prefix), since the 80386
  8415. insists upon masking `%eip' to 16 bits after the word displacement is
  8416. added. (See also *note i386-Arch::)
  8417.  
  8418.    Note that the `jcxz', `jecxz', `loop', `loopz', `loope', `loopnz'
  8419. and `loopne' instructions only come in byte displacements, so that if
  8420. you use these instructions (`gcc' does not use them) you may get an
  8421. error message (and incorrect code).  The AT&T 80386 assembler tries to
  8422. get around this problem by expanding `jcxz foo' to
  8423.  
  8424.               jcxz cx_zero
  8425.               jmp cx_nonzero
  8426.      cx_zero: jmp foo
  8427.      cx_nonzero:
  8428.  
  8429. 
  8430. File: as.info,  Node: i386-Float,  Next: i386-SIMD,  Prev: i386-Jumps,  Up: i386-Dependent
  8431.  
  8432. 8.12.8 Floating Point
  8433. ---------------------
  8434.  
  8435. All 80387 floating point types except packed BCD are supported.  (BCD
  8436. support may be added without much difficulty).  These data types are
  8437. 16-, 32-, and 64- bit integers, and single (32-bit), double (64-bit),
  8438. and extended (80-bit) precision floating point.  Each supported type
  8439. has an instruction mnemonic suffix and a constructor associated with
  8440. it.  Instruction mnemonic suffixes specify the operand's data type.
  8441. Constructors build these data types into memory.
  8442.  
  8443.    * Floating point constructors are `.float' or `.single', `.double',
  8444.      and `.tfloat' for 32-, 64-, and 80-bit formats.  These correspond
  8445.      to instruction mnemonic suffixes `s', `l', and `t'. `t' stands for
  8446.      80-bit (ten byte) real.  The 80387 only supports this format via
  8447.      the `fldt' (load 80-bit real to stack top) and `fstpt' (store
  8448.      80-bit real and pop stack) instructions.
  8449.  
  8450.    * Integer constructors are `.word', `.long' or `.int', and `.quad'
  8451.      for the 16-, 32-, and 64-bit integer formats.  The corresponding
  8452.      instruction mnemonic suffixes are `s' (single), `l' (long), and
  8453.      `q' (quad).  As with the 80-bit real format, the 64-bit `q' format
  8454.      is only present in the `fildq' (load quad integer to stack top)
  8455.      and `fistpq' (store quad integer and pop stack) instructions.
  8456.  
  8457.    Register to register operations should not use instruction mnemonic
  8458. suffixes.  `fstl %st, %st(1)' will give a warning, and be assembled as
  8459. if you wrote `fst %st, %st(1)', since all register to register
  8460. operations use 80-bit floating point operands. (Contrast this with
  8461. `fstl %st, mem', which converts `%st' from 80-bit to 64-bit floating
  8462. point format, then stores the result in the 4 byte location `mem')
  8463.  
  8464. 
  8465. File: as.info,  Node: i386-SIMD,  Next: i386-16bit,  Prev: i386-Float,  Up: i386-Dependent
  8466.  
  8467. 8.12.9 Intel's MMX and AMD's 3DNow! SIMD Operations
  8468. ---------------------------------------------------
  8469.  
  8470. `as' supports Intel's MMX instruction set (SIMD instructions for
  8471. integer data), available on Intel's Pentium MMX processors and Pentium
  8472. II processors, AMD's K6 and K6-2 processors, Cyrix' M2 processor, and
  8473. probably others.  It also supports AMD's 3DNow!  instruction set (SIMD
  8474. instructions for 32-bit floating point data) available on AMD's K6-2
  8475. processor and possibly others in the future.
  8476.  
  8477.    Currently, `as' does not support Intel's floating point SIMD, Katmai
  8478. (KNI).
  8479.  
  8480.    The eight 64-bit MMX operands, also used by 3DNow!, are called
  8481. `%mm0', `%mm1', ... `%mm7'.  They contain eight 8-bit integers, four
  8482. 16-bit integers, two 32-bit integers, one 64-bit integer, or two 32-bit
  8483. floating point values.  The MMX registers cannot be used at the same
  8484. time as the floating point stack.
  8485.  
  8486.    See Intel and AMD documentation, keeping in mind that the operand
  8487. order in instructions is reversed from the Intel syntax.
  8488.  
  8489. 
  8490. File: as.info,  Node: i386-16bit,  Next: i386-Arch,  Prev: i386-SIMD,  Up: i386-Dependent
  8491.  
  8492. 8.12.10 Writing 16-bit Code
  8493. ---------------------------
  8494.  
  8495. While `as' normally writes only "pure" 32-bit i386 code or 64-bit
  8496. x86-64 code depending on the default configuration, it also supports
  8497. writing code to run in real mode or in 16-bit protected mode code
  8498. segments.  To do this, put a `.code16' or `.code16gcc' directive before
  8499. the assembly language instructions to be run in 16-bit mode.  You can
  8500. switch `as' back to writing normal 32-bit code with the `.code32'
  8501. directive.
  8502.  
  8503.    `.code16gcc' provides experimental support for generating 16-bit
  8504. code from gcc, and differs from `.code16' in that `call', `ret',
  8505. `enter', `leave', `push', `pop', `pusha', `popa', `pushf', and `popf'
  8506. instructions default to 32-bit size.  This is so that the stack pointer
  8507. is manipulated in the same way over function calls, allowing access to
  8508. function parameters at the same stack offsets as in 32-bit mode.
  8509. `.code16gcc' also automatically adds address size prefixes where
  8510. necessary to use the 32-bit addressing modes that gcc generates.
  8511.  
  8512.    The code which `as' generates in 16-bit mode will not necessarily
  8513. run on a 16-bit pre-80386 processor.  To write code that runs on such a
  8514. processor, you must refrain from using _any_ 32-bit constructs which
  8515. require `as' to output address or operand size prefixes.
  8516.  
  8517.    Note that writing 16-bit code instructions by explicitly specifying a
  8518. prefix or an instruction mnemonic suffix within a 32-bit code section
  8519. generates different machine instructions than those generated for a
  8520. 16-bit code segment.  In a 32-bit code section, the following code
  8521. generates the machine opcode bytes `66 6a 04', which pushes the value
  8522. `4' onto the stack, decrementing `%esp' by 2.
  8523.  
  8524.              pushw $4
  8525.  
  8526.    The same code in a 16-bit code section would generate the machine
  8527. opcode bytes `6a 04' (ie. without the operand size prefix), which is
  8528. correct since the processor default operand size is assumed to be 16
  8529. bits in a 16-bit code section.
  8530.  
  8531. 
  8532. File: as.info,  Node: i386-Bugs,  Next: i386-Notes,  Prev: i386-Arch,  Up: i386-Dependent
  8533.  
  8534. 8.12.11 AT&T Syntax bugs
  8535. ------------------------
  8536.  
  8537. The UnixWare assembler, and probably other AT&T derived ix86 Unix
  8538. assemblers, generate floating point instructions with reversed source
  8539. and destination registers in certain cases.  Unfortunately, gcc and
  8540. possibly many other programs use this reversed syntax, so we're stuck
  8541. with it.
  8542.  
  8543.    For example
  8544.  
  8545.              fsub %st,%st(3)
  8546.    results in `%st(3)' being updated to `%st - %st(3)' rather than the
  8547. expected `%st(3) - %st'.  This happens with all the non-commutative
  8548. arithmetic floating point operations with two register operands where
  8549. the source register is `%st' and the destination register is `%st(i)'.
  8550.  
  8551. 
  8552. File: as.info,  Node: i386-Arch,  Next: i386-Bugs,  Prev: i386-16bit,  Up: i386-Dependent
  8553.  
  8554. 8.12.12 Specifying CPU Architecture
  8555. -----------------------------------
  8556.  
  8557. `as' may be told to assemble for a particular CPU (sub-)architecture
  8558. with the `.arch CPU_TYPE' directive.  This directive enables a warning
  8559. when gas detects an instruction that is not supported on the CPU
  8560. specified.  The choices for CPU_TYPE are:
  8561.  
  8562. `i8086'        `i186'         `i286'         `i386'
  8563. `i486'         `i586'         `i686'         `pentium'
  8564. `pentiumpro'   `pentiumii'    `pentiumiii'   `pentium4'
  8565. `k6'           `athlon'                      
  8566.                `sledgehammer'                
  8567. `.mmx' `.sse'                                
  8568. `.sse2'                                      
  8569. `.3dnow'                                     
  8570.  
  8571.    Apart from the warning, there are only two other effects on `as'
  8572. operation;  Firstly, if you specify a CPU other than `i486', then shift
  8573. by one instructions such as `sarl $1, %eax' will automatically use a
  8574. two byte opcode sequence.  The larger three byte opcode sequence is
  8575. used on the 486 (and when no architecture is specified) because it
  8576. executes faster on the 486.  Note that you can explicitly request the
  8577. two byte opcode by writing `sarl %eax'.  Secondly, if you specify
  8578. `i8086', `i186', or `i286', _and_ `.code16' or `.code16gcc' then byte
  8579. offset conditional jumps will be promoted when necessary to a two
  8580. instruction sequence consisting of a conditional jump of the opposite
  8581. sense around an unconditional jump to the target.
  8582.  
  8583.    Following the CPU architecture (but not a sub-architecture, which
  8584. are those starting with a dot), you may specify `jumps' or `nojumps' to
  8585. control automatic promotion of conditional jumps. `jumps' is the
  8586. default, and enables jump promotion;  All external jumps will be of the
  8587. long variety, and file-local jumps will be promoted as necessary.
  8588. (*note i386-Jumps::)  `nojumps' leaves external conditional jumps as
  8589. byte offset jumps, and warns about file-local conditional jumps that
  8590. `as' promotes.  Unconditional jumps are treated as for `jumps'.
  8591.  
  8592.    For example
  8593.  
  8594.       .arch i8086,nojumps
  8595.  
  8596. 
  8597. File: as.info,  Node: i386-Notes,  Prev: i386-Bugs,  Up: i386-Dependent
  8598.  
  8599. 8.12.13 Notes
  8600. -------------
  8601.  
  8602. There is some trickery concerning the `mul' and `imul' instructions
  8603. that deserves mention.  The 16-, 32-, 64- and 128-bit expanding
  8604. multiplies (base opcode `0xf6'; extension 4 for `mul' and 5 for `imul')
  8605. can be output only in the one operand form.  Thus, `imul %ebx, %eax'
  8606. does _not_ select the expanding multiply; the expanding multiply would
  8607. clobber the `%edx' register, and this would confuse `gcc' output.  Use
  8608. `imul %ebx' to get the 64-bit product in `%edx:%eax'.
  8609.  
  8610.    We have added a two operand form of `imul' when the first operand is
  8611. an immediate mode expression and the second operand is a register.
  8612. This is just a shorthand, so that, multiplying `%eax' by 69, for
  8613. example, can be done with `imul $69, %eax' rather than `imul $69, %eax,
  8614. %eax'.
  8615.  
  8616. 
  8617. File: as.info,  Node: i860-Dependent,  Next: i960-Dependent,  Prev: i386-Dependent,  Up: Machine Dependencies
  8618.  
  8619. 8.13 Intel i860 Dependent Features
  8620. ==================================
  8621.  
  8622. * Menu:
  8623.  
  8624. * Notes-i860::                  i860 Notes
  8625. * Options-i860::                i860 Command-line Options
  8626. * Directives-i860::             i860 Machine Directives
  8627. * Opcodes for i860::            i860 Opcodes
  8628.  
  8629. 
  8630. File: as.info,  Node: Notes-i860,  Next: Options-i860,  Up: i860-Dependent
  8631.  
  8632. 8.13.1 i860 Notes
  8633. -----------------
  8634.  
  8635. This is a fairly complete i860 assembler which is compatible with the
  8636. UNIX System V/860 Release 4 assembler. However, it does not currently
  8637. support SVR4 PIC (i.e., `@GOT, @GOTOFF, @PLT').
  8638.  
  8639.    Like the SVR4/860 assembler, the output object format is ELF32.
  8640. Currently, this is the only supported object format. If there is
  8641. sufficient interest, other formats such as COFF may be implemented.
  8642.  
  8643.    Both the Intel and AT&T/SVR4 syntaxes are supported, with the latter
  8644. being the default.  One difference is that AT&T syntax requires the '%'
  8645. prefix on register names while Intel syntax does not.  Another
  8646. difference is in the specification of relocatable expressions.  The
  8647. Intel syntax is `ha%expression' whereas the SVR4 syntax is
  8648. `[expression]@ha' (and similarly for the "l" and "h" selectors).
  8649.  
  8650. 
  8651. File: as.info,  Node: Options-i860,  Next: Directives-i860,  Prev: Notes-i860,  Up: i860-Dependent
  8652.  
  8653. 8.13.2 i860 Command-line Options
  8654. --------------------------------
  8655.  
  8656. 8.13.2.1 SVR4 compatibility options
  8657. ...................................
  8658.  
  8659. `-V'
  8660.      Print assembler version.
  8661.  
  8662. `-Qy'
  8663.      Ignored.
  8664.  
  8665. `-Qn'
  8666.      Ignored.
  8667.  
  8668. 8.13.2.2 Other options
  8669. ......................
  8670.  
  8671. `-EL'
  8672.      Select little endian output (this is the default).
  8673.  
  8674. `-EB'
  8675.      Select big endian output. Note that the i860 always reads
  8676.      instructions as little endian data, so this option only effects
  8677.      data and not instructions.
  8678.  
  8679. `-mwarn-expand'
  8680.      Emit a warning message if any pseudo-instruction expansions
  8681.      occurred.  For example, a `or' instruction with an immediate
  8682.      larger than 16-bits will be expanded into two instructions. This
  8683.      is a very undesirable feature to rely on, so this flag can help
  8684.      detect any code where it happens. One use of it, for instance, has
  8685.      been to find and eliminate any place where `gcc' may emit these
  8686.      pseudo-instructions.
  8687.  
  8688. `-mxp'
  8689.      Enable support for the i860XP instructions and control registers.
  8690.      By default, this option is disabled so that only the base
  8691.      instruction set (i.e., i860XR) is supported.
  8692.  
  8693. `-mintel-syntax'
  8694.      The i860 assembler defaults to AT&T/SVR4 syntax.  This option
  8695.      enables the Intel syntax.
  8696.  
  8697. 
  8698. File: as.info,  Node: Directives-i860,  Next: Opcodes for i860,  Prev: Options-i860,  Up: i860-Dependent
  8699.  
  8700. 8.13.3 i860 Machine Directives
  8701. ------------------------------
  8702.  
  8703. `.dual'
  8704.      Enter dual instruction mode. While this directive is supported, the
  8705.      preferred way to use dual instruction mode is to explicitly code
  8706.      the dual bit with the `d.' prefix.
  8707.  
  8708. `.enddual'
  8709.      Exit dual instruction mode. While this directive is supported, the
  8710.      preferred way to use dual instruction mode is to explicitly code
  8711.      the dual bit with the `d.' prefix.
  8712.  
  8713. `.atmp'
  8714.      Change the temporary register used when expanding pseudo
  8715.      operations. The default register is `r31'.
  8716.  
  8717.    The `.dual', `.enddual', and `.atmp' directives are available only
  8718. in the Intel syntax mode.
  8719.  
  8720.    Both syntaxes allow for the standard `.align' directive.  However,
  8721. the Intel syntax additionally allows keywords for the alignment
  8722. parameter: "`.align type'", where `type' is one of `.short', `.long',
  8723. `.quad', `.single', `.double' representing alignments of 2, 4, 16, 4,
  8724. and 8, respectively.
  8725.  
  8726. 
  8727. File: as.info,  Node: Opcodes for i860,  Prev: Directives-i860,  Up: i860-Dependent
  8728.  
  8729. 8.13.4 i860 Opcodes
  8730. -------------------
  8731.  
  8732. All of the Intel i860XR and i860XP machine instructions are supported.
  8733. Please see either _i860 Microprocessor Programmer's Reference Manual_
  8734. or _i860 Microprocessor Architecture_ for more information.
  8735.  
  8736. 8.13.4.1 Other instruction support (pseudo-instructions)
  8737. ........................................................
  8738.  
  8739. For compatibility with some other i860 assemblers, a number of
  8740. pseudo-instructions are supported. While these are supported, they are
  8741. a very undesirable feature that should be avoided - in particular, when
  8742. they result in an expansion to multiple actual i860 instructions. Below
  8743. are the pseudo-instructions that result in expansions.
  8744.    * Load large immediate into general register:
  8745.  
  8746.      The pseudo-instruction `mov imm,%rn' (where the immediate does not
  8747.      fit within a signed 16-bit field) will be expanded into:
  8748.           orh large_imm@h,%r0,%rn
  8749.           or large_imm@l,%rn,%rn
  8750.  
  8751.    * Load/store with relocatable address expression:
  8752.  
  8753.      For example, the pseudo-instruction `ld.b addr_exp(%rx),%rn' will
  8754.      be expanded into:
  8755.           orh addr_exp@ha,%rx,%r31
  8756.           ld.l addr_exp@l(%r31),%rn
  8757.  
  8758.      The analogous expansions apply to `ld.x, st.x, fld.x, pfld.x,
  8759.      fst.x', and `pst.x' as well.
  8760.  
  8761.    * Signed large immediate with add/subtract:
  8762.  
  8763.      If any of the arithmetic operations `adds, addu, subs, subu' are
  8764.      used with an immediate larger than 16-bits (signed), then they
  8765.      will be expanded.  For instance, the pseudo-instruction `adds
  8766.      large_imm,%rx,%rn' expands to:
  8767.           orh large_imm@h,%r0,%r31
  8768.           or large_imm@l,%r31,%r31
  8769.           adds %r31,%rx,%rn
  8770.  
  8771.    * Unsigned large immediate with logical operations:
  8772.  
  8773.      Logical operations (`or, andnot, or, xor') also result in
  8774.      expansions.  The pseudo-instruction `or large_imm,%rx,%rn' results
  8775.      in:
  8776.           orh large_imm@h,%rx,%r31
  8777.           or large_imm@l,%r31,%rn
  8778.  
  8779.      Similarly for the others, except for `and' which expands to:
  8780.           andnot (-1 - large_imm)@h,%rx,%r31
  8781.           andnot (-1 - large_imm)@l,%r31,%rn
  8782.  
  8783. 
  8784. File: as.info,  Node: i960-Dependent,  Next: IA-64-Dependent,  Prev: i860-Dependent,  Up: Machine Dependencies
  8785.  
  8786. 8.14 Intel 80960 Dependent Features
  8787. ===================================
  8788.  
  8789. * Menu:
  8790.  
  8791. * Options-i960::                i960 Command-line Options
  8792. * Floating Point-i960::         Floating Point
  8793. * Directives-i960::             i960 Machine Directives
  8794. * Opcodes for i960::            i960 Opcodes
  8795.  
  8796. 
  8797. File: as.info,  Node: Options-i960,  Next: Floating Point-i960,  Up: i960-Dependent
  8798.  
  8799. 8.14.1 i960 Command-line Options
  8800. --------------------------------
  8801.  
  8802. `-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC'
  8803.      Select the 80960 architecture.  Instructions or features not
  8804.      supported by the selected architecture cause fatal errors.
  8805.  
  8806.      `-ACA' is equivalent to `-ACA_A'; `-AKC' is equivalent to `-AMC'.
  8807.      Synonyms are provided for compatibility with other tools.
  8808.  
  8809.      If you do not specify any of these options, `as' generates code
  8810.      for any instruction or feature that is supported by _some_ version
  8811.      of the 960 (even if this means mixing architectures!).  In
  8812.      principle, `as' attempts to deduce the minimal sufficient
  8813.      processor type if none is specified; depending on the object code
  8814.      format, the processor type may be recorded in the object file.  If
  8815.      it is critical that the `as' output match a specific architecture,
  8816.      specify that architecture explicitly.
  8817.  
  8818. `-b'
  8819.      Add code to collect information about conditional branches taken,
  8820.      for later optimization using branch prediction bits.  (The
  8821.      conditional branch instructions have branch prediction bits in the
  8822.      CA, CB, and CC architectures.)  If BR represents a conditional
  8823.      branch instruction, the following represents the code generated by
  8824.      the assembler when `-b' is specified:
  8825.  
  8826.                   call    INCREMENT ROUTINE
  8827.                   .word   0       # pre-counter
  8828.           Label:  BR
  8829.                   call    INCREMENT ROUTINE
  8830.                   .word   0       # post-counter
  8831.  
  8832.      The counter following a branch records the number of times that
  8833.      branch was _not_ taken; the differenc between the two counters is
  8834.      the number of times the branch _was_ taken.
  8835.  
  8836.      A table of every such `Label' is also generated, so that the
  8837.      external postprocessor `gbr960' (supplied by Intel) can locate all
  8838.      the counters.  This table is always labeled `__BRANCH_TABLE__';
  8839.      this is a local symbol to permit collecting statistics for many
  8840.      separate object files.  The table is word aligned, and begins with
  8841.      a two-word header.  The first word, initialized to 0, is used in
  8842.      maintaining linked lists of branch tables.  The second word is a
  8843.      count of the number of entries in the table, which follow
  8844.      immediately: each is a word, pointing to one of the labels
  8845.      illustrated above.
  8846.  
  8847.            +------------+------------+------------+ ... +------------+
  8848.            |            |            |            |     |            |
  8849.            |  *NEXT     |  COUNT: N  | *BRLAB 1   |     | *BRLAB N   |
  8850.            |            |            |            |     |            |
  8851.            +------------+------------+------------+ ... +------------+
  8852.  
  8853.                          __BRANCH_TABLE__ layout
  8854.  
  8855.      The first word of the header is used to locate multiple branch
  8856.      tables, since each object file may contain one. Normally the links
  8857.      are maintained with a call to an initialization routine, placed at
  8858.      the beginning of each function in the file.  The GNU C compiler
  8859.      generates these calls automatically when you give it a `-b' option.
  8860.      For further details, see the documentation of `gbr960'.
  8861.  
  8862. `-no-relax'
  8863.      Normally, Compare-and-Branch instructions with targets that require
  8864.      displacements greater than 13 bits (or that have external targets)
  8865.      are replaced with the corresponding compare (or `chkbit') and
  8866.      branch instructions.  You can use the `-no-relax' option to
  8867.      specify that `as' should generate errors instead, if the target
  8868.      displacement is larger than 13 bits.
  8869.  
  8870.      This option does not affect the Compare-and-Jump instructions; the
  8871.      code emitted for them is _always_ adjusted when necessary
  8872.      (depending on displacement size), regardless of whether you use
  8873.      `-no-relax'.
  8874.  
  8875. 
  8876. File: as.info,  Node: Floating Point-i960,  Next: Directives-i960,  Prev: Options-i960,  Up: i960-Dependent
  8877.  
  8878. 8.14.2 Floating Point
  8879. ---------------------
  8880.  
  8881. `as' generates IEEE floating-point numbers for the directives `.float',
  8882. `.double', `.extended', and `.single'.
  8883.  
  8884. 
  8885. File: as.info,  Node: Directives-i960,  Next: Opcodes for i960,  Prev: Floating Point-i960,  Up: i960-Dependent
  8886.  
  8887. 8.14.3 i960 Machine Directives
  8888. ------------------------------
  8889.  
  8890. `.bss SYMBOL, LENGTH, ALIGN'
  8891.      Reserve LENGTH bytes in the bss section for a local SYMBOL,
  8892.      aligned to the power of two specified by ALIGN.  LENGTH and ALIGN
  8893.      must be positive absolute expressions.  This directive differs
  8894.      from `.lcomm' only in that it permits you to specify an alignment.
  8895.      *Note `.lcomm': Lcomm.
  8896.  
  8897. `.extended FLONUMS'
  8898.      `.extended' expects zero or more flonums, separated by commas; for
  8899.      each flonum, `.extended' emits an IEEE extended-format (80-bit)
  8900.      floating-point number.
  8901.  
  8902. `.leafproc CALL-LAB, BAL-LAB'
  8903.      You can use the `.leafproc' directive in conjunction with the
  8904.      optimized `callj' instruction to enable faster calls of leaf
  8905.      procedures.  If a procedure is known to call no other procedures,
  8906.      you may define an entry point that skips procedure prolog code
  8907.      (and that does not depend on system-supplied saved context), and
  8908.      declare it as the BAL-LAB using `.leafproc'.  If the procedure
  8909.      also has an entry point that goes through the normal prolog, you
  8910.      can specify that entry point as CALL-LAB.
  8911.  
  8912.      A `.leafproc' declaration is meant for use in conjunction with the
  8913.      optimized call instruction `callj'; the directive records the data
  8914.      needed later to choose between converting the `callj' into a `bal'
  8915.      or a `call'.
  8916.  
  8917.      CALL-LAB is optional; if only one argument is present, or if the
  8918.      two arguments are identical, the single argument is assumed to be
  8919.      the `bal' entry point.
  8920.  
  8921. `.sysproc NAME, INDEX'
  8922.      The `.sysproc' directive defines a name for a system procedure.
  8923.      After you define it using `.sysproc', you can use NAME to refer to
  8924.      the system procedure identified by INDEX when calling procedures
  8925.      with the optimized call instruction `callj'.
  8926.  
  8927.      Both arguments are required; INDEX must be between 0 and 31
  8928.      (inclusive).
  8929.  
  8930. 
  8931. File: as.info,  Node: Opcodes for i960,  Prev: Directives-i960,  Up: i960-Dependent
  8932.  
  8933. 8.14.4 i960 Opcodes
  8934. -------------------
  8935.  
  8936. All Intel 960 machine instructions are supported; *note i960
  8937. Command-line Options: Options-i960. for a discussion of selecting the
  8938. instruction subset for a particular 960 architecture.
  8939.  
  8940.    Some opcodes are processed beyond simply emitting a single
  8941. corresponding instruction: `callj', and Compare-and-Branch or
  8942. Compare-and-Jump instructions with target displacements larger than 13
  8943. bits.
  8944.  
  8945. * Menu:
  8946.  
  8947. * callj-i960::                  `callj'
  8948. * Compare-and-branch-i960::     Compare-and-Branch
  8949.  
  8950. 
  8951. File: as.info,  Node: callj-i960,  Next: Compare-and-branch-i960,  Up: Opcodes for i960
  8952.  
  8953. 8.14.4.1 `callj'
  8954. ................
  8955.  
  8956. You can write `callj' to have the assembler or the linker determine the
  8957. most appropriate form of subroutine call: `call', `bal', or `calls'.
  8958. If the assembly source contains enough information--a `.leafproc' or
  8959. `.sysproc' directive defining the operand--then `as' translates the
  8960. `callj'; if not, it simply emits the `callj', leaving it for the linker
  8961. to resolve.
  8962.  
  8963. 
  8964. File: as.info,  Node: Compare-and-branch-i960,  Prev: callj-i960,  Up: Opcodes for i960
  8965.  
  8966. 8.14.4.2 Compare-and-Branch
  8967. ...........................
  8968.  
  8969. The 960 architectures provide combined Compare-and-Branch instructions
  8970. that permit you to store the branch target in the lower 13 bits of the
  8971. instruction word itself.  However, if you specify a branch target far
  8972. enough away that its address won't fit in 13 bits, the assembler can
  8973. either issue an error, or convert your Compare-and-Branch instruction
  8974. into separate instructions to do the compare and the branch.
  8975.  
  8976.    Whether `as' gives an error or expands the instruction depends on
  8977. two choices you can make: whether you use the `-no-relax' option, and
  8978. whether you use a "Compare and Branch" instruction or a "Compare and
  8979. Jump" instruction.  The "Jump" instructions are _always_ expanded if
  8980. necessary; the "Branch" instructions are expanded when necessary
  8981. _unless_ you specify `-no-relax'--in which case `as' gives an error
  8982. instead.
  8983.  
  8984.    These are the Compare-and-Branch instructions, their "Jump" variants,
  8985. and the instruction pairs they may expand into:
  8986.  
  8987.              Compare and
  8988.           Branch      Jump       Expanded to
  8989.           ------    ------       ------------
  8990.              bbc                 chkbit; bno
  8991.              bbs                 chkbit; bo
  8992.           cmpibe    cmpije       cmpi; be
  8993.           cmpibg    cmpijg       cmpi; bg
  8994.          cmpibge   cmpijge       cmpi; bge
  8995.           cmpibl    cmpijl       cmpi; bl
  8996.          cmpible   cmpijle       cmpi; ble
  8997.          cmpibno   cmpijno       cmpi; bno
  8998.          cmpibne   cmpijne       cmpi; bne
  8999.           cmpibo    cmpijo       cmpi; bo
  9000.           cmpobe    cmpoje       cmpo; be
  9001.           cmpobg    cmpojg       cmpo; bg
  9002.          cmpobge   cmpojge       cmpo; bge
  9003.           cmpobl    cmpojl       cmpo; bl
  9004.          cmpoble   cmpojle       cmpo; ble
  9005.          cmpobne   cmpojne       cmpo; bne
  9006.  
  9007. 
  9008. File: as.info,  Node: IA-64-Dependent,  Next: IP2K-Dependent,  Prev: i960-Dependent,  Up: Machine Dependencies
  9009.  
  9010. 8.15 IA-64 Dependent Features
  9011. =============================
  9012.  
  9013. * Menu:
  9014.  
  9015. * IA-64 Options::              Options
  9016. * IA-64 Syntax::               Syntax
  9017. * IA-64 Opcodes::              Opcodes
  9018.  
  9019. 
  9020. File: as.info,  Node: IA-64 Options,  Next: IA-64 Syntax,  Up: IA-64-Dependent
  9021.  
  9022. 8.15.1 Options
  9023. --------------
  9024.  
  9025. `-mconstant-gp'
  9026.      This option instructs the assembler to mark the resulting object
  9027.      file as using the "constant GP" model.  With this model, it is
  9028.      assumed that the entire program uses a single global pointer (GP)
  9029.      value.  Note that this option does not in any fashion affect the
  9030.      machine code emitted by the assembler.  All it does is turn on the
  9031.      EF_IA_64_CONS_GP flag in the ELF file header.
  9032.  
  9033. `-mauto-pic'
  9034.      This option instructs the assembler to mark the resulting object
  9035.      file as using the "constant GP without function descriptor" data
  9036.      model.  This model is like the "constant GP" model, except that it
  9037.      additionally does away with function descriptors.  What this means
  9038.      is that the address of a function refers directly to the
  9039.      function's code entry-point.  Normally, such an address would
  9040.      refer to a function descriptor, which contains both the code
  9041.      entry-point and the GP-value needed by the function.  Note that
  9042.      this option does not in any fashion affect the machine code
  9043.      emitted by the assembler.  All it does is turn on the
  9044.      EF_IA_64_NOFUNCDESC_CONS_GP flag in the ELF file header.
  9045.  
  9046. `-milp32'
  9047.  
  9048. `-milp64'
  9049.  
  9050. `-mlp64'
  9051.  
  9052. `-mp64'
  9053.      These options select the data model.  The assembler defaults to
  9054.      `-mlp64' (LP64 data model).
  9055.  
  9056. `-mle'
  9057.  
  9058. `-mbe'
  9059.      These options select the byte order.  The `-mle' option selects
  9060.      little-endian byte order (default) and `-mbe' selects big-endian
  9061.      byte order.  Note that IA-64 machine code always uses
  9062.      little-endian byte order.
  9063.  
  9064. `-munwind-check=warning'
  9065.  
  9066. `-munwind-check=error'
  9067.      These options control what the assembler will do when performing
  9068.      consistency checks on unwind directives.  `-munwind-check=warning'
  9069.      will make the assembler issue a warning when an unwind directive
  9070.      check fails.  This is the default.  `-munwind-check=error' will
  9071.      make the assembler issue an error when an unwind directive check
  9072.      fails.
  9073.  
  9074. `-mhint.b=ok'
  9075.  
  9076. `-mhint.b=warning'
  9077.  
  9078. `-mhint.b=error'
  9079.      These options control what the assembler will do when the `hint.b'
  9080.      instruction is used.  `-mhint.b=ok' will make the assembler accept
  9081.      `hint.b'.  `-mint.b=warning' will make the assembler issue a
  9082.      warning when `hint.b' is used.  `-mhint.b=error' will make the
  9083.      assembler treat `hint.b' as an error, which is the default.
  9084.  
  9085. `-x'
  9086.  
  9087. `-xexplicit'
  9088.      These options turn on dependency violation checking.
  9089.  
  9090. `-xauto'
  9091.      This option instructs the assembler to automatically insert stop
  9092.      bits where necessary to remove dependency violations.  This is the
  9093.      default mode.
  9094.  
  9095. `-xnone'
  9096.      This option turns off dependency violation checking.
  9097.  
  9098. `-xdebug'
  9099.      This turns on debug output intended to help tracking down bugs in
  9100.      the dependency violation checker.
  9101.  
  9102. `-xdebugn'
  9103.      This is a shortcut for -xnone -xdebug.
  9104.  
  9105. `-xdebugx'
  9106.      This is a shortcut for -xexplicit -xdebug.
  9107.  
  9108.  
  9109. 
  9110. File: as.info,  Node: IA-64 Syntax,  Next: IA-64 Opcodes,  Prev: IA-64 Options,  Up: IA-64-Dependent
  9111.  
  9112. 8.15.2 Syntax
  9113. -------------
  9114.  
  9115. The assembler syntax closely follows the IA-64 Assembly Language
  9116. Reference Guide.
  9117.  
  9118. * Menu:
  9119.  
  9120. * IA-64-Chars::                Special Characters
  9121. * IA-64-Regs::                 Register Names
  9122. * IA-64-Bits::                 Bit Names
  9123.  
  9124. 
  9125. File: as.info,  Node: IA-64-Chars,  Next: IA-64-Regs,  Up: IA-64 Syntax
  9126.  
  9127. 8.15.2.1 Special Characters
  9128. ...........................
  9129.  
  9130. `//' is the line comment token.
  9131.  
  9132.    `;' can be used instead of a newline to separate statements.
  9133.  
  9134. 
  9135. File: as.info,  Node: IA-64-Regs,  Next: IA-64-Bits,  Prev: IA-64-Chars,  Up: IA-64 Syntax
  9136.  
  9137. 8.15.2.2 Register Names
  9138. .......................
  9139.  
  9140. The 128 integer registers are referred to as `rN'.  The 128
  9141. floating-point registers are referred to as `fN'.  The 128 application
  9142. registers are referred to as `arN'.  The 128 control registers are
  9143. referred to as `crN'.  The 64 one-bit predicate registers are referred
  9144. to as `pN'.  The 8 branch registers are referred to as `bN'.  In
  9145. addition, the assembler defines a number of aliases: `gp' (`r1'), `sp'
  9146. (`r12'), `rp' (`b0'), `ret0' (`r8'), `ret1' (`r9'), `ret2' (`r10'),
  9147. `ret3' (`r9'), `fargN' (`f8+N'), and `fretN' (`f8+N').
  9148.  
  9149.    For convenience, the assembler also defines aliases for all named
  9150. application and control registers.  For example, `ar.bsp' refers to the
  9151. register backing store pointer (`ar17').  Similarly, `cr.eoi' refers to
  9152. the end-of-interrupt register (`cr67').
  9153.  
  9154. 
  9155. File: as.info,  Node: IA-64-Bits,  Prev: IA-64-Regs,  Up: IA-64 Syntax
  9156.  
  9157. 8.15.2.3 IA-64 Processor-Status-Register (PSR) Bit Names
  9158. ........................................................
  9159.  
  9160. The assembler defines bit masks for each of the bits in the IA-64
  9161. processor status register.  For example, `psr.ic' corresponds to a
  9162. value of 0x2000.  These masks are primarily intended for use with the
  9163. `ssm'/`sum' and `rsm'/`rum' instructions, but they can be used anywhere
  9164. else where an integer constant is expected.
  9165.  
  9166. 
  9167. File: as.info,  Node: IA-64 Opcodes,  Prev: IA-64 Syntax,  Up: IA-64-Dependent
  9168.  
  9169. 8.15.3 Opcodes
  9170. --------------
  9171.  
  9172. For detailed information on the IA-64 machine instruction set, see the
  9173. IA-64 Architecture Handbook
  9174. (http://developer.intel.com/design/itanium/arch_spec.htm).
  9175.  
  9176. 
  9177. File: as.info,  Node: IP2K-Dependent,  Next: M32R-Dependent,  Prev: IA-64-Dependent,  Up: Machine Dependencies
  9178.  
  9179. 8.16 IP2K Dependent Features
  9180. ============================
  9181.  
  9182. * Menu:
  9183.  
  9184. * IP2K-Opts::                   IP2K Options
  9185.  
  9186. 
  9187. File: as.info,  Node: IP2K-Opts,  Up: IP2K-Dependent
  9188.  
  9189. 8.16.1 IP2K Options
  9190. -------------------
  9191.  
  9192. The Ubicom IP2K version of `as' has a few machine dependent options:
  9193.  
  9194. `-mip2022ext'
  9195.      `as' can assemble the extended IP2022 instructions, but it will
  9196.      only do so if this is specifically allowed via this command line
  9197.      option.
  9198.  
  9199. `-mip2022'
  9200.      This option restores the assembler's default behaviour of not
  9201.      permitting the extended IP2022 instructions to be assembled.
  9202.  
  9203.  
  9204. 
  9205. File: as.info,  Node: M32R-Dependent,  Next: M68K-Dependent,  Prev: IP2K-Dependent,  Up: Machine Dependencies
  9206.  
  9207. 8.17 M32R Dependent Features
  9208. ============================
  9209.  
  9210. * Menu:
  9211.  
  9212. * M32R-Opts::                   M32R Options
  9213. * M32R-Directives::             M32R Directives
  9214. * M32R-Warnings::               M32R Warnings
  9215.  
  9216. 
  9217. File: as.info,  Node: M32R-Opts,  Next: M32R-Directives,  Up: M32R-Dependent
  9218.  
  9219. 8.17.1 M32R Options
  9220. -------------------
  9221.  
  9222. The Renease M32R version of `as' has a few machine dependent options:
  9223.  
  9224. `-m32rx'
  9225.      `as' can assemble code for several different members of the
  9226.      Renesas M32R family.  Normally the default is to assemble code for
  9227.      the M32R microprocessor.  This option may be used to change the
  9228.      default to the M32RX microprocessor, which adds some more
  9229.      instructions to the basic M32R instruction set, and some
  9230.      additional parameters to some of the original instructions.
  9231.  
  9232. `-m32r2'
  9233.      This option changes the target processor to the the M32R2
  9234.      microprocessor.
  9235.  
  9236. `-m32r'
  9237.      This option can be used to restore the assembler's default
  9238.      behaviour of assembling for the M32R microprocessor.  This can be
  9239.      useful if the default has been changed by a previous command line
  9240.      option.
  9241.  
  9242. `-little'
  9243.      This option tells the assembler to produce little-endian code and
  9244.      data.  The default is dependent upon how the toolchain was
  9245.      configured.
  9246.  
  9247. `-EL'
  9248.      This is a synonum for _-little_.
  9249.  
  9250. `-big'
  9251.      This option tells the assembler to produce big-endian code and
  9252.      data.
  9253.  
  9254. `-EB'
  9255.      This is a synonum for _-big_.
  9256.  
  9257. `-KPIC'
  9258.      This option specifies that the output of the assembler should be
  9259.      marked as position-independent code (PIC).
  9260.  
  9261. `-parallel'
  9262.      This option tells the assembler to attempts to combine two
  9263.      sequential instructions into a single, parallel instruction, where
  9264.      it is legal to do so.
  9265.  
  9266. `-no-parallel'
  9267.      This option disables a previously enabled _-parallel_ option.
  9268.  
  9269. `-no-bitinst'
  9270.      This option disables the support for the extended bit-field
  9271.      instructions provided by the M32R2.  If this support needs to be
  9272.      re-enabled the _-bitinst_ switch can be used to restore it.
  9273.  
  9274. `-O'
  9275.      This option tells the assembler to attempt to optimize the
  9276.      instructions that it produces.  This includes filling delay slots
  9277.      and converting sequential instructions into parallel ones.  This
  9278.      option implies _-parallel_.
  9279.  
  9280. `-warn-explicit-parallel-conflicts'
  9281.      Instructs `as' to produce warning messages when questionable
  9282.      parallel instructions are encountered.  This option is enabled by
  9283.      default, but `gcc' disables it when it invokes `as' directly.
  9284.      Questionable instructions are those whoes behaviour would be
  9285.      different if they were executed sequentially.  For example the
  9286.      code fragment `mv r1, r2 || mv r3, r1' produces a different result
  9287.      from `mv r1, r2 \n mv r3, r1' since the former moves r1 into r3
  9288.      and then r2 into r1, whereas the later moves r2 into r1 and r3.
  9289.  
  9290. `-Wp'
  9291.      This is a shorter synonym for the
  9292.      _-warn-explicit-parallel-conflicts_ option.
  9293.  
  9294. `-no-warn-explicit-parallel-conflicts'
  9295.      Instructs `as' not to produce warning messages when questionable
  9296.      parallel instructions are encountered.
  9297.  
  9298. `-Wnp'
  9299.      This is a shorter synonym for the
  9300.      _-no-warn-explicit-parallel-conflicts_ option.
  9301.  
  9302. `-ignore-parallel-conflicts'
  9303.      This option tells the assembler's to stop checking parallel
  9304.      instructions for contraint violations.  This ability is provided
  9305.      for hardware vendors testing chip designs and should not be used
  9306.      under normal circumstances.
  9307.  
  9308. `-no-ignore-parallel-conflicts'
  9309.      This option restores the assembler's default behaviour of checking
  9310.      parallel instructions to detect constraint violations.
  9311.  
  9312. `-Ip'
  9313.      This is a shorter synonym for the _-ignore-parallel-conflicts_
  9314.      option.
  9315.  
  9316. `-nIp'
  9317.      This is a shorter synonym for the _-no-ignore-parallel-conflicts_
  9318.      option.
  9319.  
  9320. `-warn-unmatched-high'
  9321.      This option tells the assembler to produce a warning message if a
  9322.      `.high' pseudo op is encountered without a mathcing `.low' pseudo
  9323.      op.  The presence of such an unmatches pseudo op usually indicates
  9324.      a programming error.
  9325.  
  9326. `-no-warn-unmatched-high'
  9327.      Disables a previously enabled _-warn-unmatched-high_ option.
  9328.  
  9329. `-Wuh'
  9330.      This is a shorter synonym for the _-warn-unmatched-high_ option.
  9331.  
  9332. `-Wnuh'
  9333.      This is a shorter synonym for the _-no-warn-unmatched-high_ option.
  9334.  
  9335.  
  9336. 
  9337. File: as.info,  Node: M32R-Directives,  Next: M32R-Warnings,  Prev: M32R-Opts,  Up: M32R-Dependent
  9338.  
  9339. 8.17.2 M32R Directives
  9340. ----------------------
  9341.  
  9342. The Renease M32R version of `as' has a few architecture specific
  9343. directives:
  9344.  
  9345. `low EXPRESSION'
  9346.      The `low' directive computes the value of its expression and
  9347.      places the lower 16-bits of the result into the immediate-field of
  9348.      the instruction.  For example:
  9349.  
  9350.              or3   r0, r0, #low(0x12345678) ; compute r0 = r0 | 0x5678
  9351.              add3, r0, r0, #low(fred)   ; compute r0 = r0 + low 16-bits of address of fred
  9352.  
  9353. `high EXPRESSION'
  9354.      The `high' directive computes the value of its expression and
  9355.      places the upper 16-bits of the result into the immediate-field of
  9356.      the instruction.  For example:
  9357.  
  9358.              seth  r0, #high(0x12345678) ; compute r0 = 0x12340000
  9359.              seth, r0, #high(fred)       ; compute r0 = upper 16-bits of address of fred
  9360.  
  9361. `shigh EXPRESSION'
  9362.      The `shigh' directive is very similar to the `high' directive.  It
  9363.      also computes the value of its expression and places the upper
  9364.      16-bits of the result into the immediate-field of the instruction.
  9365.      The difference is that `shigh' also checks to see if the lower
  9366.      16-bits could be interpreted as a signed number, and if so it
  9367.      assumes that a borrow will occur from the upper-16 bits.  To
  9368.      compensate for this the `shigh' directive pre-biases the upper 16
  9369.      bit value by adding one to it.  For example:
  9370.  
  9371.      For example:
  9372.  
  9373.              seth  r0, #shigh(0x12345678) ; compute r0 = 0x12340000
  9374.              seth  r0, #shigh(0x00008000) ; compute r0 = 0x00010000
  9375.  
  9376.      In the second example the lower 16-bits are 0x8000.  If these are
  9377.      treated as a signed value and sign extended to 32-bits then the
  9378.      value becomes 0xffff8000.  If this value is then added to
  9379.      0x00010000 then the result is 0x00008000.
  9380.  
  9381.      This behaviour is to allow for the different semantics of the
  9382.      `or3' and `add3' instructions.  The `or3' instruction treats its
  9383.      16-bit immediate argument as unsigned whereas the `add3' treats
  9384.      its 16-bit immediate as a signed value.  So for example:
  9385.  
  9386.              seth  r0, #shigh(0x00008000)
  9387.              add3  r0, r0, #low(0x00008000)
  9388.  
  9389.      Produces the correct result in r0, whereas:
  9390.  
  9391.              seth  r0, #shigh(0x00008000)
  9392.              or3   r0, r0, #low(0x00008000)
  9393.  
  9394.      Stores 0xffff8000 into r0.
  9395.  
  9396.      Note - the `shigh' directive does not know where in the assembly
  9397.      source code the lower 16-bits of the value are going set, so it
  9398.      cannot check to make sure that an `or3' instruction is being used
  9399.      rather than an `add3' instruction.  It is up to the programmer to
  9400.      make sure that correct directives are used.
  9401.  
  9402. `.m32r'
  9403.      The directive performs a similar thing as the _-m32r_ command line
  9404.      option.  It tells the assembler to only accept M32R instructions
  9405.      from now on.  An instructions from later M32R architectures are
  9406.      refused.
  9407.  
  9408. `.m32rx'
  9409.      The directive performs a similar thing as the _-m32rx_ command
  9410.      line option.  It tells the assembler to start accepting the extra
  9411.      instructions in the M32RX ISA as well as the ordinary M32R ISA.
  9412.  
  9413. `.m32r2'
  9414.      The directive performs a similar thing as the _-m32r2_ command
  9415.      line option.  It tells the assembler to start accepting the extra
  9416.      instructions in the M32R2 ISA as well as the ordinary M32R ISA.
  9417.  
  9418. `.little'
  9419.      The directive performs a similar thing as the _-little_ command
  9420.      line option.  It tells the assembler to start producing
  9421.      little-endian code and data.  This option should be used with care
  9422.      as producing mixed-endian binary files is frought with danger.
  9423.  
  9424. `.big'
  9425.      The directive performs a similar thing as the _-big_ command line
  9426.      option.  It tells the assembler to start producing big-endian code
  9427.      and data.  This option should be used with care as producing
  9428.      mixed-endian binary files is frought with danger.
  9429.  
  9430.  
  9431. 
  9432. File: as.info,  Node: M32R-Warnings,  Prev: M32R-Directives,  Up: M32R-Dependent
  9433.  
  9434. 8.17.3 M32R Warnings
  9435. --------------------
  9436.  
  9437. There are several warning and error messages that can be produced by
  9438. `as' which are specific to the M32R:
  9439.  
  9440. `output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?'
  9441.      This message is only produced if warnings for explicit parallel
  9442.      conflicts have been enabled.  It indicates that the assembler has
  9443.      encountered a parallel instruction in which the destination
  9444.      register of the left hand instruction is used as an input register
  9445.      in the right hand instruction.  For example in this code fragment
  9446.      `mv r1, r2 || neg r3, r1' register r1 is the destination of the
  9447.      move instruction and the input to the neg instruction.
  9448.  
  9449. `output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?'
  9450.      This message is only produced if warnings for explicit parallel
  9451.      conflicts have been enabled.  It indicates that the assembler has
  9452.      encountered a parallel instruction in which the destination
  9453.      register of the right hand instruction is used as an input
  9454.      register in the left hand instruction.  For example in this code
  9455.      fragment `mv r1, r2 || neg r2, r3' register r2 is the destination
  9456.      of the neg instruction and the input to the move instruction.
  9457.  
  9458. `instruction `...' is for the M32RX only'
  9459.      This message is produced when the assembler encounters an
  9460.      instruction which is only supported by the M32Rx processor, and
  9461.      the `-m32rx' command line flag has not been specified to allow
  9462.      assembly of such instructions.
  9463.  
  9464. `unknown instruction `...''
  9465.      This message is produced when the assembler encounters an
  9466.      instruction which it does not recognise.
  9467.  
  9468. `only the NOP instruction can be issued in parallel on the m32r'
  9469.      This message is produced when the assembler encounters a parallel
  9470.      instruction which does not involve a NOP instruction and the
  9471.      `-m32rx' command line flag has not been specified.  Only the M32Rx
  9472.      processor is able to execute two instructions in parallel.
  9473.  
  9474. `instruction `...' cannot be executed in parallel.'
  9475.      This message is produced when the assembler encounters a parallel
  9476.      instruction which is made up of one or two instructions which
  9477.      cannot be executed in parallel.
  9478.  
  9479. `Instructions share the same execution pipeline'
  9480.      This message is produced when the assembler encounters a parallel
  9481.      instruction whoes components both use the same execution pipeline.
  9482.  
  9483. `Instructions write to the same destination register.'
  9484.      This message is produced when the assembler encounters a parallel
  9485.      instruction where both components attempt to modify the same
  9486.      register.  For example these code fragments will produce this
  9487.      message: `mv r1, r2 || neg r1, r3' `jl r0 || mv r14, r1' `st r2,
  9488.      @-r1 || mv r1, r3' `mv r1, r2 || ld r0, @r1+' `cmp r1, r2 || addx
  9489.      r3, r4' (Both write to the condition bit)
  9490.  
  9491.  
  9492. 
  9493. File: as.info,  Node: M68K-Dependent,  Next: M68HC11-Dependent,  Prev: M32R-Dependent,  Up: Machine Dependencies
  9494.  
  9495. 8.18 M680x0 Dependent Features
  9496. ==============================
  9497.  
  9498. * Menu:
  9499.  
  9500. * M68K-Opts::                   M680x0 Options
  9501. * M68K-Syntax::                 Syntax
  9502. * M68K-Moto-Syntax::            Motorola Syntax
  9503. * M68K-Float::                  Floating Point
  9504. * M68K-Directives::             680x0 Machine Directives
  9505. * M68K-opcodes::                Opcodes
  9506.  
  9507. 
  9508. File: as.info,  Node: M68K-Opts,  Next: M68K-Syntax,  Up: M68K-Dependent
  9509.  
  9510. 8.18.1 M680x0 Options
  9511. ---------------------
  9512.  
  9513. The Motorola 680x0 version of `as' has a few machine dependent options:
  9514.  
  9515. `-l'
  9516.      You can use the `-l' option to shorten the size of references to
  9517.      undefined symbols.  If you do not use the `-l' option, references
  9518.      to undefined symbols are wide enough for a full `long' (32 bits).
  9519.      (Since `as' cannot know where these symbols end up, `as' can only
  9520.      allocate space for the linker to fill in later.  Since `as' does
  9521.      not know how far away these symbols are, it allocates as much
  9522.      space as it can.)  If you use this option, the references are only
  9523.      one word wide (16 bits).  This may be useful if you want the
  9524.      object file to be as small as possible, and you know that the
  9525.      relevant symbols are always less than 17 bits away.
  9526.  
  9527. `--register-prefix-optional'
  9528.      For some configurations, especially those where the compiler
  9529.      normally does not prepend an underscore to the names of user
  9530.      variables, the assembler requires a `%' before any use of a
  9531.      register name.  This is intended to let the assembler distinguish
  9532.      between C variables and functions named `a0' through `a7', and so
  9533.      on.  The `%' is always accepted, but is not required for certain
  9534.      configurations, notably `sun3'.  The `--register-prefix-optional'
  9535.      option may be used to permit omitting the `%' even for
  9536.      configurations for which it is normally required.  If this is
  9537.      done, it will generally be impossible to refer to C variables and
  9538.      functions with the same names as register names.
  9539.  
  9540. `--bitwise-or'
  9541.      Normally the character `|' is treated as a comment character, which
  9542.      means that it can not be used in expressions.  The `--bitwise-or'
  9543.      option turns `|' into a normal character.  In this mode, you must
  9544.      either use C style comments, or start comments with a `#' character
  9545.      at the beginning of a line.
  9546.  
  9547. `--base-size-default-16  --base-size-default-32'
  9548.      If you use an addressing mode with a base register without
  9549.      specifying the size, `as' will normally use the full 32 bit value.
  9550.      For example, the addressing mode `%a0@(%d0)' is equivalent to
  9551.      `%a0@(%d0:l)'.  You may use the `--base-size-default-16' option to
  9552.      tell `as' to default to using the 16 bit value.  In this case,
  9553.      `%a0@(%d0)' is equivalent to `%a0@(%d0:w)'.  You may use the
  9554.      `--base-size-default-32' option to restore the default behaviour.
  9555.  
  9556. `--disp-size-default-16  --disp-size-default-32'
  9557.      If you use an addressing mode with a displacement, and the value
  9558.      of the displacement is not known, `as' will normally assume that
  9559.      the value is 32 bits.  For example, if the symbol `disp' has not
  9560.      been defined, `as' will assemble the addressing mode
  9561.      `%a0@(disp,%d0)' as though `disp' is a 32 bit value.  You may use
  9562.      the `--disp-size-default-16' option to tell `as' to instead assume
  9563.      that the displacement is 16 bits.  In this case, `as' will
  9564.      assemble `%a0@(disp,%d0)' as though `disp' is a 16 bit value.  You
  9565.      may use the `--disp-size-default-32' option to restore the default
  9566.      behaviour.
  9567.  
  9568. `--pcrel'
  9569.      Always keep branches PC-relative.  In the M680x0 architecture all
  9570.      branches are defined as PC-relative.  However, on some processors
  9571.      they are limited to word displacements maximum.  When `as' needs a
  9572.      long branch that is not available, it normally emits an absolute
  9573.      jump instead.  This option disables this substitution.  When this
  9574.      option is given and no long branches are available, only word
  9575.      branches will be emitted.  An error message will be generated if a
  9576.      word branch cannot reach its target.  This option has no effect on
  9577.      68020 and other processors that have long branches.  *note Branch
  9578.      Improvement: M68K-Branch.
  9579.  
  9580. `-m68000'
  9581.      `as' can assemble code for several different members of the
  9582.      Motorola 680x0 family.  The default depends upon how `as' was
  9583.      configured when it was built; normally, the default is to assemble
  9584.      code for the 68020 microprocessor.  The following options may be
  9585.      used to change the default.  These options control which
  9586.      instructions and addressing modes are permitted.  The members of
  9587.      the 680x0 family are very similar.  For detailed information about
  9588.      the differences, see the Motorola manuals.
  9589.  
  9590.     `-m68000'
  9591.     `-m68ec000'
  9592.     `-m68hc000'
  9593.     `-m68hc001'
  9594.     `-m68008'
  9595.     `-m68302'
  9596.     `-m68306'
  9597.     `-m68307'
  9598.     `-m68322'
  9599.     `-m68356'
  9600.           Assemble for the 68000. `-m68008', `-m68302', and so on are
  9601.           synonyms for `-m68000', since the chips are the same from the
  9602.           point of view of the assembler.
  9603.  
  9604.     `-m68010'
  9605.           Assemble for the 68010.
  9606.  
  9607.     `-m68020'
  9608.     `-m68ec020'
  9609.           Assemble for the 68020.  This is normally the default.
  9610.  
  9611.     `-m68030'
  9612.     `-m68ec030'
  9613.           Assemble for the 68030.
  9614.  
  9615.     `-m68040'
  9616.     `-m68ec040'
  9617.           Assemble for the 68040.
  9618.  
  9619.     `-m68060'
  9620.     `-m68ec060'
  9621.           Assemble for the 68060.
  9622.  
  9623.     `-mcpu32'
  9624.     `-m68330'
  9625.     `-m68331'
  9626.     `-m68332'
  9627.     `-m68333'
  9628.     `-m68334'
  9629.     `-m68336'
  9630.     `-m68340'
  9631.     `-m68341'
  9632.     `-m68349'
  9633.     `-m68360'
  9634.           Assemble for the CPU32 family of chips.
  9635.  
  9636.     `-m5200'
  9637.  
  9638.     `-m5202'
  9639.  
  9640.     `-m5204'
  9641.  
  9642.     `-m5206'
  9643.  
  9644.     `-m5206e'
  9645.  
  9646.     `-m521x'
  9647.  
  9648.     `-m5249'
  9649.  
  9650.     `-m528x'
  9651.  
  9652.     `-m5307'
  9653.  
  9654.     `-m5407'
  9655.  
  9656.     `-m547x'
  9657.  
  9658.     `-m548x'
  9659.  
  9660.     `-mcfv4'
  9661.  
  9662.     `-mcfv4e'
  9663.           Assemble for the ColdFire family of chips.
  9664.  
  9665.     `-m68881'
  9666.     `-m68882'
  9667.           Assemble 68881 floating point instructions.  This is the
  9668.           default for the 68020, 68030, and the CPU32.  The 68040 and
  9669.           68060 always support floating point instructions.
  9670.  
  9671.     `-mno-68881'
  9672.           Do not assemble 68881 floating point instructions.  This is
  9673.           the default for 68000 and the 68010.  The 68040 and 68060
  9674.           always support floating point instructions, even if this
  9675.           option is used.
  9676.  
  9677.     `-m68851'
  9678.           Assemble 68851 MMU instructions.  This is the default for the
  9679.           68020, 68030, and 68060.  The 68040 accepts a somewhat
  9680.           different set of MMU instructions; `-m68851' and `-m68040'
  9681.           should not be used together.
  9682.  
  9683.     `-mno-68851'
  9684.           Do not assemble 68851 MMU instructions.  This is the default
  9685.           for the 68000, 68010, and the CPU32.  The 68040 accepts a
  9686.           somewhat different set of MMU instructions.
  9687.  
  9688. 
  9689. File: as.info,  Node: M68K-Syntax,  Next: M68K-Moto-Syntax,  Prev: M68K-Opts,  Up: M68K-Dependent
  9690.  
  9691. 8.18.2 Syntax
  9692. -------------
  9693.  
  9694. This syntax for the Motorola 680x0 was developed at MIT.
  9695.  
  9696.    The 680x0 version of `as' uses instructions names and syntax
  9697. compatible with the Sun assembler.  Intervening periods are ignored;
  9698. for example, `movl' is equivalent to `mov.l'.
  9699.  
  9700.    In the following table APC stands for any of the address registers
  9701. (`%a0' through `%a7'), the program counter (`%pc'), the zero-address
  9702. relative to the program counter (`%zpc'), a suppressed address register
  9703. (`%za0' through `%za7'), or it may be omitted entirely.  The use of
  9704. SIZE means one of `w' or `l', and it may be omitted, along with the
  9705. leading colon, unless a scale is also specified.  The use of SCALE
  9706. means one of `1', `2', `4', or `8', and it may always be omitted along
  9707. with the leading colon.
  9708.  
  9709.    The following addressing modes are understood:
  9710. "Immediate"
  9711.      `#NUMBER'
  9712.  
  9713. "Data Register"
  9714.      `%d0' through `%d7'
  9715.  
  9716. "Address Register"
  9717.      `%a0' through `%a7'
  9718.      `%a7' is also known as `%sp', i.e. the Stack Pointer.  `%a6' is
  9719.      also known as `%fp', the Frame Pointer.
  9720.  
  9721. "Address Register Indirect"
  9722.      `%a0@' through `%a7@'
  9723.  
  9724. "Address Register Postincrement"
  9725.      `%a0@+' through `%a7@+'
  9726.  
  9727. "Address Register Predecrement"
  9728.      `%a0@-' through `%a7@-'
  9729.  
  9730. "Indirect Plus Offset"
  9731.      `APC@(NUMBER)'
  9732.  
  9733. "Index"
  9734.      `APC@(NUMBER,REGISTER:SIZE:SCALE)'
  9735.  
  9736.      The NUMBER may be omitted.
  9737.  
  9738. "Postindex"
  9739.      `APC@(NUMBER)@(ONUMBER,REGISTER:SIZE:SCALE)'
  9740.  
  9741.      The ONUMBER or the REGISTER, but not both, may be omitted.
  9742.  
  9743. "Preindex"
  9744.      `APC@(NUMBER,REGISTER:SIZE:SCALE)@(ONUMBER)'
  9745.  
  9746.      The NUMBER may be omitted.  Omitting the REGISTER produces the
  9747.      Postindex addressing mode.
  9748.  
  9749. "Absolute"
  9750.      `SYMBOL', or `DIGITS', optionally followed by `:b', `:w', or `:l'.
  9751.  
  9752. 
  9753. File: as.info,  Node: M68K-Moto-Syntax,  Next: M68K-Float,  Prev: M68K-Syntax,  Up: M68K-Dependent
  9754.  
  9755. 8.18.3 Motorola Syntax
  9756. ----------------------
  9757.  
  9758. The standard Motorola syntax for this chip differs from the syntax
  9759. already discussed (*note Syntax: M68K-Syntax.).  `as' can accept
  9760. Motorola syntax for operands, even if MIT syntax is used for other
  9761. operands in the same instruction.  The two kinds of syntax are fully
  9762. compatible.
  9763.  
  9764.    In the following table APC stands for any of the address registers
  9765. (`%a0' through `%a7'), the program counter (`%pc'), the zero-address
  9766. relative to the program counter (`%zpc'), or a suppressed address
  9767. register (`%za0' through `%za7').  The use of SIZE means one of `w' or
  9768. `l', and it may always be omitted along with the leading dot.  The use
  9769. of SCALE means one of `1', `2', `4', or `8', and it may always be
  9770. omitted along with the leading asterisk.
  9771.  
  9772.    The following additional addressing modes are understood:
  9773.  
  9774. "Address Register Indirect"
  9775.      `(%a0)' through `(%a7)'
  9776.      `%a7' is also known as `%sp', i.e. the Stack Pointer.  `%a6' is
  9777.      also known as `%fp', the Frame Pointer.
  9778.  
  9779. "Address Register Postincrement"
  9780.      `(%a0)+' through `(%a7)+'
  9781.  
  9782. "Address Register Predecrement"
  9783.      `-(%a0)' through `-(%a7)'
  9784.  
  9785. "Indirect Plus Offset"
  9786.      `NUMBER(%A0)' through `NUMBER(%A7)', or `NUMBER(%PC)'.
  9787.  
  9788.      The NUMBER may also appear within the parentheses, as in
  9789.      `(NUMBER,%A0)'.  When used with the PC, the NUMBER may be omitted
  9790.      (with an address register, omitting the NUMBER produces Address
  9791.      Register Indirect mode).
  9792.  
  9793. "Index"
  9794.      `NUMBER(APC,REGISTER.SIZE*SCALE)'
  9795.  
  9796.      The NUMBER may be omitted, or it may appear within the
  9797.      parentheses.  The APC may be omitted.  The REGISTER and the APC
  9798.      may appear in either order.  If both APC and REGISTER are address
  9799.      registers, and the SIZE and SCALE are omitted, then the first
  9800.      register is taken as the base register, and the second as the
  9801.      index register.
  9802.  
  9803. "Postindex"
  9804.      `([NUMBER,APC],REGISTER.SIZE*SCALE,ONUMBER)'
  9805.  
  9806.      The ONUMBER, or the REGISTER, or both, may be omitted.  Either the
  9807.      NUMBER or the APC may be omitted, but not both.
  9808.  
  9809. "Preindex"
  9810.      `([NUMBER,APC,REGISTER.SIZE*SCALE],ONUMBER)'
  9811.  
  9812.      The NUMBER, or the APC, or the REGISTER, or any two of them, may
  9813.      be omitted.  The ONUMBER may be omitted.  The REGISTER and the APC
  9814.      may appear in either order.  If both APC and REGISTER are address
  9815.      registers, and the SIZE and SCALE are omitted, then the first
  9816.      register is taken as the base register, and the second as the
  9817.      index register.
  9818.  
  9819. 
  9820. File: as.info,  Node: M68K-Float,  Next: M68K-Directives,  Prev: M68K-Moto-Syntax,  Up: M68K-Dependent
  9821.  
  9822. 8.18.4 Floating Point
  9823. ---------------------
  9824.  
  9825. Packed decimal (P) format floating literals are not supported.  Feel
  9826. free to add the code!
  9827.  
  9828.    The floating point formats generated by directives are these.
  9829.  
  9830. `.float'
  9831.      `Single' precision floating point constants.
  9832.  
  9833. `.double'
  9834.      `Double' precision floating point constants.
  9835.  
  9836. `.extend'
  9837. `.ldouble'
  9838.      `Extended' precision (`long double') floating point constants.
  9839.  
  9840. 
  9841. File: as.info,  Node: M68K-Directives,  Next: M68K-opcodes,  Prev: M68K-Float,  Up: M68K-Dependent
  9842.  
  9843. 8.18.5 680x0 Machine Directives
  9844. -------------------------------
  9845.  
  9846. In order to be compatible with the Sun assembler the 680x0 assembler
  9847. understands the following directives.
  9848.  
  9849. `.data1'
  9850.      This directive is identical to a `.data 1' directive.
  9851.  
  9852. `.data2'
  9853.      This directive is identical to a `.data 2' directive.
  9854.  
  9855. `.even'
  9856.      This directive is a special case of the `.align' directive; it
  9857.      aligns the output to an even byte boundary.
  9858.  
  9859. `.skip'
  9860.      This directive is identical to a `.space' directive.
  9861.  
  9862. 
  9863. File: as.info,  Node: M68K-opcodes,  Prev: M68K-Directives,  Up: M68K-Dependent
  9864.  
  9865. 8.18.6 Opcodes
  9866. --------------
  9867.  
  9868. * Menu:
  9869.  
  9870. * M68K-Branch::                 Branch Improvement
  9871. * M68K-Chars::                  Special Characters
  9872.  
  9873. 
  9874. File: as.info,  Node: M68K-Branch,  Next: M68K-Chars,  Up: M68K-opcodes
  9875.  
  9876. 8.18.6.1 Branch Improvement
  9877. ...........................
  9878.  
  9879. Certain pseudo opcodes are permitted for branch instructions.  They
  9880. expand to the shortest branch instruction that reach the target.
  9881. Generally these mnemonics are made by substituting `j' for `b' at the
  9882. start of a Motorola mnemonic.
  9883.  
  9884.    The following table summarizes the pseudo-operations.  A `*' flags
  9885. cases that are more fully described after the table:
  9886.  
  9887.                Displacement
  9888.                +------------------------------------------------------------
  9889.                |                68020           68000/10, not PC-relative OK
  9890.      Pseudo-Op |BYTE    WORD    LONG            ABSOLUTE LONG JUMP    **
  9891.                +------------------------------------------------------------
  9892.           jbsr |bsrs    bsrw    bsrl            jsr
  9893.            jra |bras    braw    bral            jmp
  9894.      *     jXX |bXXs    bXXw    bXXl            bNXs;jmp
  9895.      *    dbXX | N/A    dbXXw   dbXX;bras;bral  dbXX;bras;jmp
  9896.           fjXX | N/A    fbXXw   fbXXl            N/A
  9897.  
  9898.      XX: condition
  9899.      NX: negative of condition XX
  9900.                        `*'--see full description below
  9901.          `**'--this expansion mode is disallowed by `--pcrel'
  9902.  
  9903. `jbsr'
  9904. `jra'
  9905.      These are the simplest jump pseudo-operations; they always map to
  9906.      one particular machine instruction, depending on the displacement
  9907.      to the branch target.  This instruction will be a byte or word
  9908.      branch is that is sufficient.  Otherwise, a long branch will be
  9909.      emitted if available.  If no long branches are available and the
  9910.      `--pcrel' option is not given, an absolute long jump will be
  9911.      emitted instead.  If no long branches are available, the `--pcrel'
  9912.      option is given, and a word branch cannot reach the target, an
  9913.      error message is generated.
  9914.  
  9915.      In addition to standard branch operands, `as' allows these
  9916.      pseudo-operations to have all operands that are allowed for jsr
  9917.      and jmp, substituting these instructions if the operand given is
  9918.      not valid for a branch instruction.
  9919.  
  9920. `jXX'
  9921.      Here, `jXX' stands for an entire family of pseudo-operations,
  9922.      where XX is a conditional branch or condition-code test.  The full
  9923.      list of pseudo-ops in this family is:
  9924.            jhi   jls   jcc   jcs   jne   jeq   jvc
  9925.            jvs   jpl   jmi   jge   jlt   jgt   jle
  9926.  
  9927.      Usually, each of these pseudo-operations expands to a single branch
  9928.      instruction.  However, if a word branch is not sufficient, no long
  9929.      branches are available, and the `--pcrel' option is not given, `as'
  9930.      issues a longer code fragment in terms of NX, the opposite
  9931.      condition to XX.  For example, under these conditions:
  9932.               jXX foo
  9933.      gives
  9934.                bNXs oof
  9935.                jmp foo
  9936.            oof:
  9937.  
  9938. `dbXX'
  9939.      The full family of pseudo-operations covered here is
  9940.            dbhi   dbls   dbcc   dbcs   dbne   dbeq   dbvc
  9941.            dbvs   dbpl   dbmi   dbge   dblt   dbgt   dble
  9942.            dbf    dbra   dbt
  9943.  
  9944.      Motorola `dbXX' instructions allow word displacements only.  When
  9945.      a word displacement is sufficient, each of these pseudo-operations
  9946.      expands to the corresponding Motorola instruction.  When a word
  9947.      displacement is not sufficient and long branches are available,
  9948.      when the source reads `dbXX foo', `as' emits
  9949.                dbXX oo1
  9950.                bras oo2
  9951.            oo1:bral foo
  9952.            oo2:
  9953.  
  9954.      If, however, long branches are not available and the `--pcrel'
  9955.      option is not given, `as' emits
  9956.                dbXX oo1
  9957.                bras oo2
  9958.            oo1:jmp foo
  9959.            oo2:
  9960.  
  9961. `fjXX'
  9962.      This family includes
  9963.            fjne   fjeq   fjge   fjlt   fjgt   fjle   fjf
  9964.            fjt    fjgl   fjgle  fjnge  fjngl  fjngle fjngt
  9965.            fjnle  fjnlt  fjoge  fjogl  fjogt  fjole  fjolt
  9966.            fjor   fjseq  fjsf   fjsne  fjst   fjueq  fjuge
  9967.            fjugt  fjule  fjult  fjun
  9968.  
  9969.      Each of these pseudo-operations always expands to a single Motorola
  9970.      coprocessor branch instruction, word or long.  All Motorola
  9971.      coprocessor branch instructions allow both word and long
  9972.      displacements.
  9973.  
  9974.  
  9975. 
  9976. File: as.info,  Node: M68K-Chars,  Prev: M68K-Branch,  Up: M68K-opcodes
  9977.  
  9978. 8.18.6.2 Special Characters
  9979. ...........................
  9980.  
  9981. The immediate character is `#' for Sun compatibility.  The line-comment
  9982. character is `|' (unless the `--bitwise-or' option is used).  If a `#'
  9983. appears at the beginning of a line, it is treated as a comment unless
  9984. it looks like `# line file', in which case it is treated normally.
  9985.  
  9986. 
  9987. File: as.info,  Node: M68HC11-Dependent,  Next: M88K-Dependent,  Prev: M68K-Dependent,  Up: Machine Dependencies
  9988.  
  9989. 8.19 M68HC11 and M68HC12 Dependent Features
  9990. ===========================================
  9991.  
  9992. * Menu:
  9993.  
  9994. * M68HC11-Opts::                   M68HC11 and M68HC12 Options
  9995. * M68HC11-Syntax::                 Syntax
  9996. * M68HC11-Modifiers::              Symbolic Operand Modifiers
  9997. * M68HC11-Directives::             Assembler Directives
  9998. * M68HC11-Float::                  Floating Point
  9999. * M68HC11-opcodes::                Opcodes
  10000.  
  10001. 
  10002. File: as.info,  Node: M68HC11-Opts,  Next: M68HC11-Syntax,  Up: M68HC11-Dependent
  10003.  
  10004. 8.19.1 M68HC11 and M68HC12 Options
  10005. ----------------------------------
  10006.  
  10007. The Motorola 68HC11 and 68HC12 version of `as' have a few machine
  10008. dependent options.
  10009.  
  10010. `-m68hc11'
  10011.      This option switches the assembler in the M68HC11 mode. In this
  10012.      mode, the assembler only accepts 68HC11 operands and mnemonics. It
  10013.      produces code for the 68HC11.
  10014.  
  10015. `-m68hc12'
  10016.      This option switches the assembler in the M68HC12 mode. In this
  10017.      mode, the assembler also accepts 68HC12 operands and mnemonics. It
  10018.      produces code for the 68HC12. A few 68HC11 instructions are
  10019.      replaced by some 68HC12 instructions as recommended by Motorola
  10020.      specifications.
  10021.  
  10022. `-m68hcs12'
  10023.      This option switches the assembler in the M68HCS12 mode.  This
  10024.      mode is similar to `-m68hc12' but specifies to assemble for the
  10025.      68HCS12 series.  The only difference is on the assembling of the
  10026.      `movb' and `movw' instruction when a PC-relative operand is used.
  10027.  
  10028. `-mshort'
  10029.      This option controls the ABI and indicates to use a 16-bit integer
  10030.      ABI.  It has no effect on the assembled instructions.  This is the
  10031.      default.
  10032.  
  10033. `-mlong'
  10034.      This option controls the ABI and indicates to use a 32-bit integer
  10035.      ABI.
  10036.  
  10037. `-mshort-double'
  10038.      This option controls the ABI and indicates to use a 32-bit float
  10039.      ABI.  This is the default.
  10040.  
  10041. `-mlong-double'
  10042.      This option controls the ABI and indicates to use a 64-bit float
  10043.      ABI.
  10044.  
  10045. `--strict-direct-mode'
  10046.      You can use the `--strict-direct-mode' option to disable the
  10047.      automatic translation of direct page mode addressing into extended
  10048.      mode when the instruction does not support direct mode.  For
  10049.      example, the `clr' instruction does not support direct page mode
  10050.      addressing. When it is used with the direct page mode, `as' will
  10051.      ignore it and generate an absolute addressing.  This option
  10052.      prevents `as' from doing this, and the wrong usage of the direct
  10053.      page mode will raise an error.
  10054.  
  10055. `--short-branchs'
  10056.      The `--short-branchs' option turns off the translation of relative
  10057.      branches into absolute branches when the branch offset is out of
  10058.      range. By default `as' transforms the relative branch (`bsr',
  10059.      `bgt', `bge', `beq', `bne', `ble', `blt', `bhi', `bcc', `bls',
  10060.      `bcs', `bmi', `bvs', `bvs', `bra') into an absolute branch when
  10061.      the offset is out of the -128 .. 127 range.  In that case, the
  10062.      `bsr' instruction is translated into a `jsr', the `bra'
  10063.      instruction is translated into a `jmp' and the conditional branchs
  10064.      instructions are inverted and followed by a `jmp'. This option
  10065.      disables these translations and `as' will generate an error if a
  10066.      relative branch is out of range. This option does not affect the
  10067.      optimization associated to the `jbra', `jbsr' and `jbXX' pseudo
  10068.      opcodes.
  10069.  
  10070. `--force-long-branchs'
  10071.      The `--force-long-branchs' option forces the translation of
  10072.      relative branches into absolute branches. This option does not
  10073.      affect the optimization associated to the `jbra', `jbsr' and
  10074.      `jbXX' pseudo opcodes.
  10075.  
  10076. `--print-insn-syntax'
  10077.      You can use the `--print-insn-syntax' option to obtain the syntax
  10078.      description of the instruction when an error is detected.
  10079.  
  10080. `--print-opcodes'
  10081.      The `--print-opcodes' option prints the list of all the
  10082.      instructions with their syntax. The first item of each line
  10083.      represents the instruction name and the rest of the line indicates
  10084.      the possible operands for that instruction. The list is printed in
  10085.      alphabetical order. Once the list is printed `as' exits.
  10086.  
  10087. `--generate-example'
  10088.      The `--generate-example' option is similar to `--print-opcodes'
  10089.      but it generates an example for each instruction instead.
  10090.  
  10091. 
  10092. File: as.info,  Node: M68HC11-Syntax,  Next: M68HC11-Modifiers,  Prev: M68HC11-Opts,  Up: M68HC11-Dependent
  10093.  
  10094. 8.19.2 Syntax
  10095. -------------
  10096.  
  10097. In the M68HC11 syntax, the instruction name comes first and it may be
  10098. followed by one or several operands (up to three). Operands are
  10099. separated by comma (`,'). In the normal mode, `as' will complain if too
  10100. many operands are specified for a given instruction. In the MRI mode
  10101. (turned on with `-M' option), it will treat them as comments. Example:
  10102.  
  10103.      inx
  10104.      lda  #23
  10105.      bset 2,x #4
  10106.      brclr *bot #8 foo
  10107.  
  10108.    The following addressing modes are understood for 68HC11 and 68HC12:
  10109. "Immediate"
  10110.      `#NUMBER'
  10111.  
  10112. "Address Register"
  10113.      `NUMBER,X', `NUMBER,Y'
  10114.  
  10115.      The NUMBER may be omitted in which case 0 is assumed.
  10116.  
  10117. "Direct Addressing mode"
  10118.      `*SYMBOL', or `*DIGITS'
  10119.  
  10120. "Absolute"
  10121.      `SYMBOL', or `DIGITS'
  10122.  
  10123.    The M68HC12 has other more complex addressing modes. All of them are
  10124. supported and they are represented below:
  10125.  
  10126. "Constant Offset Indexed Addressing Mode"
  10127.      `NUMBER,REG'
  10128.  
  10129.      The NUMBER may be omitted in which case 0 is assumed.  The
  10130.      register can be either `X', `Y', `SP' or `PC'.  The assembler will
  10131.      use the smaller post-byte definition according to the constant
  10132.      value (5-bit constant offset, 9-bit constant offset or 16-bit
  10133.      constant offset).  If the constant is not known by the assembler
  10134.      it will use the 16-bit constant offset post-byte and the value
  10135.      will be resolved at link time.
  10136.  
  10137. "Offset Indexed Indirect"
  10138.      `[NUMBER,REG]'
  10139.  
  10140.      The register can be either `X', `Y', `SP' or `PC'.
  10141.  
  10142. "Auto Pre-Increment/Pre-Decrement/Post-Increment/Post-Decrement"
  10143.      `NUMBER,-REG' `NUMBER,+REG' `NUMBER,REG-' `NUMBER,REG+'
  10144.  
  10145.      The number must be in the range `-8'..`+8' and must not be 0.  The
  10146.      register can be either `X', `Y', `SP' or `PC'.
  10147.  
  10148. "Accumulator Offset"
  10149.      `ACC,REG'
  10150.  
  10151.      The accumulator register can be either `A', `B' or `D'.  The
  10152.      register can be either `X', `Y', `SP' or `PC'.
  10153.  
  10154. "Accumulator D offset indexed-indirect"
  10155.      `[D,REG]'
  10156.  
  10157.      The register can be either `X', `Y', `SP' or `PC'.
  10158.  
  10159.  
  10160.    For example:
  10161.  
  10162.      ldab 1024,sp
  10163.      ldd [10,x]
  10164.      orab 3,+x
  10165.      stab -2,y-
  10166.      ldx a,pc
  10167.      sty [d,sp]
  10168.  
  10169. 
  10170. File: as.info,  Node: M68HC11-Modifiers,  Next: M68HC11-Directives,  Prev: M68HC11-Syntax,  Up: M68HC11-Dependent
  10171.  
  10172. 8.19.3 Symbolic Operand Modifiers
  10173. ---------------------------------
  10174.  
  10175. The assembler supports several modifiers when using symbol addresses in
  10176. 68HC11 and 68HC12 instruction operands.  The general syntax is the
  10177. following:
  10178.  
  10179.      %modifier(symbol)
  10180.  
  10181. `%addr'
  10182.      This modifier indicates to the assembler and linker to use the
  10183.      16-bit physical address corresponding to the symbol.  This is
  10184.      intended to be used on memory window systems to map a symbol in
  10185.      the memory bank window.  If the symbol is in a memory expansion
  10186.      part, the physical address corresponds to the symbol address
  10187.      within the memory bank window.  If the symbol is not in a memory
  10188.      expansion part, this is the symbol address (using or not using the
  10189.      %addr modifier has no effect in that case).
  10190.  
  10191. `%page'
  10192.      This modifier indicates to use the memory page number corresponding
  10193.      to the symbol.  If the symbol is in a memory expansion part, its
  10194.      page number is computed by the linker as a number used to map the
  10195.      page containing the symbol in the memory bank window.  If the
  10196.      symbol is not in a memory expansion part, the page number is 0.
  10197.  
  10198. `%hi'
  10199.      This modifier indicates to use the 8-bit high part of the physical
  10200.      address of the symbol.
  10201.  
  10202. `%lo'
  10203.      This modifier indicates to use the 8-bit low part of the physical
  10204.      address of the symbol.
  10205.  
  10206.  
  10207.    For example a 68HC12 call to a function `foo_example' stored in
  10208. memory expansion part could be written as follows:
  10209.  
  10210.      call %addr(foo_example),%page(foo_example)
  10211.  
  10212.    and this is equivalent to
  10213.  
  10214.      call foo_example
  10215.  
  10216.    And for 68HC11 it could be written as follows:
  10217.  
  10218.      ldab #%page(foo_example)
  10219.      stab _page_switch
  10220.      jsr  %addr(foo_example)
  10221.  
  10222. 
  10223. File: as.info,  Node: M68HC11-Directives,  Next: M68HC11-Float,  Prev: M68HC11-Modifiers,  Up: M68HC11-Dependent
  10224.  
  10225. 8.19.4 Assembler Directives
  10226. ---------------------------
  10227.  
  10228. The 68HC11 and 68HC12 version of `as' have the following specific
  10229. assembler directives:
  10230.  
  10231. `.relax'
  10232.      The relax directive is used by the `GNU Compiler' to emit a
  10233.      specific relocation to mark a group of instructions for linker
  10234.      relaxation.  The sequence of instructions within the group must be
  10235.      known to the linker so that relaxation can be performed.
  10236.  
  10237. `.mode [mshort|mlong|mshort-double|mlong-double]'
  10238.      This directive specifies the ABI.  It overrides the `-mshort',
  10239.      `-mlong', `-mshort-double' and `-mlong-double' options.
  10240.  
  10241. `.far SYMBOL'
  10242.      This directive marks the symbol as a `far' symbol meaning that it
  10243.      uses a `call/rtc' calling convention as opposed to `jsr/rts'.
  10244.      During a final link, the linker will identify references to the
  10245.      `far' symbol and will verify the proper calling convention.
  10246.  
  10247. `.interrupt SYMBOL'
  10248.      This directive marks the symbol as an interrupt entry point.  This
  10249.      information is then used by the debugger to correctly unwind the
  10250.      frame across interrupts.
  10251.  
  10252. `.xrefb SYMBOL'
  10253.      This directive is defined for compatibility with the
  10254.      `Specification for Motorola 8 and 16-Bit Assembly Language Input
  10255.      Standard' and is ignored.
  10256.  
  10257.  
  10258. 
  10259. File: as.info,  Node: M68HC11-Float,  Next: M68HC11-opcodes,  Prev: M68HC11-Directives,  Up: M68HC11-Dependent
  10260.  
  10261. 8.19.5 Floating Point
  10262. ---------------------
  10263.  
  10264. Packed decimal (P) format floating literals are not supported.  Feel
  10265. free to add the code!
  10266.  
  10267.    The floating point formats generated by directives are these.
  10268.  
  10269. `.float'
  10270.      `Single' precision floating point constants.
  10271.  
  10272. `.double'
  10273.      `Double' precision floating point constants.
  10274.  
  10275. `.extend'
  10276. `.ldouble'
  10277.      `Extended' precision (`long double') floating point constants.
  10278.  
  10279. 
  10280. File: as.info,  Node: M68HC11-opcodes,  Prev: M68HC11-Float,  Up: M68HC11-Dependent
  10281.  
  10282. 8.19.6 Opcodes
  10283. --------------
  10284.  
  10285. * Menu:
  10286.  
  10287. * M68HC11-Branch::                 Branch Improvement
  10288.  
  10289. 
  10290. File: as.info,  Node: M68HC11-Branch,  Up: M68HC11-opcodes
  10291.  
  10292. 8.19.6.1 Branch Improvement
  10293. ...........................
  10294.  
  10295. Certain pseudo opcodes are permitted for branch instructions.  They
  10296. expand to the shortest branch instruction that reach the target.
  10297. Generally these mnemonics are made by prepending `j' to the start of
  10298. Motorola mnemonic. These pseudo opcodes are not affected by the
  10299. `--short-branchs' or `--force-long-branchs' options.
  10300.  
  10301.    The following table summarizes the pseudo-operations.
  10302.  
  10303.                              Displacement Width
  10304.           +-------------------------------------------------------------+
  10305.           |                     Options                                 |
  10306.           |    --short-branchs            --force-long-branchs          |
  10307.           +--------------------------+----------------------------------+
  10308.        Op |BYTE             WORD     | BYTE          WORD               |
  10309.           +--------------------------+----------------------------------+
  10310.       bsr | bsr <pc-rel>    <error>  |               jsr <abs>          |
  10311.       bra | bra <pc-rel>    <error>  |               jmp <abs>          |
  10312.      jbsr | bsr <pc-rel>   jsr <abs> | bsr <pc-rel>  jsr <abs>          |
  10313.      jbra | bra <pc-rel>   jmp <abs> | bra <pc-rel>  jmp <abs>          |
  10314.       bXX | bXX <pc-rel>    <error>  |               bNX +3; jmp <abs>  |
  10315.      jbXX | bXX <pc-rel>   bNX +3;   | bXX <pc-rel>  bNX +3; jmp <abs>  |
  10316.           |                jmp <abs> |                                  |
  10317.           +--------------------------+----------------------------------+
  10318.      XX: condition
  10319.      NX: negative of condition XX
  10320.  
  10321. `jbsr'
  10322. `jbra'
  10323.      These are the simplest jump pseudo-operations; they always map to
  10324.      one particular machine instruction, depending on the displacement
  10325.      to the branch target.
  10326.  
  10327. `jbXX'
  10328.      Here, `jbXX' stands for an entire family of pseudo-operations,
  10329.      where XX is a conditional branch or condition-code test.  The full
  10330.      list of pseudo-ops in this family is:
  10331.            jbcc   jbeq   jbge   jbgt   jbhi   jbvs   jbpl  jblo
  10332.            jbcs   jbne   jblt   jble   jbls   jbvc   jbmi
  10333.  
  10334.      For the cases of non-PC relative displacements and long
  10335.      displacements, `as' issues a longer code fragment in terms of NX,
  10336.      the opposite condition to XX.  For example, for the non-PC
  10337.      relative case:
  10338.               jbXX foo
  10339.      gives
  10340.                bNXs oof
  10341.                jmp foo
  10342.            oof:
  10343.  
  10344.  
  10345. 
  10346. File: as.info,  Node: M88K-Dependent,  Next: MIPS-Dependent,  Prev: M68HC11-Dependent,  Up: Machine Dependencies
  10347.  
  10348. 8.20 Motorola M88K Dependent Features
  10349. =====================================
  10350.  
  10351. * Menu:
  10352.  
  10353. * M88K Directives::     M88K Machine Directives
  10354.  
  10355. 
  10356. File: as.info,  Node: M88K Directives,  Up: M88K-Dependent
  10357.  
  10358. 8.20.1 M88K Machine Directives
  10359. ------------------------------
  10360.  
  10361. The M88K version of the assembler supports the following machine
  10362. directives:
  10363.  
  10364. `.align'
  10365.      This directive aligns the section program counter on the next
  10366.      4-byte boundary.
  10367.  
  10368. `.dfloat EXPR'
  10369.      This assembles a double precision (64-bit) floating point constant.
  10370.  
  10371. `.ffloat EXPR'
  10372.      This assembles a single precision (32-bit) floating point constant.
  10373.  
  10374. `.half EXPR'
  10375.      This directive assembles a half-word (16-bit) constant.
  10376.  
  10377. `.word EXPR'
  10378.      This assembles a word (32-bit) constant.
  10379.  
  10380. `.string "STR"'
  10381.      This directive behaves like the standard `.ascii' directive for
  10382.      copying STR into the object file.  The string is not terminated
  10383.      with a null byte.
  10384.  
  10385. `.set SYMBOL, VALUE'
  10386.      This directive creates a symbol named SYMBOL which is an alias for
  10387.      another symbol (possibly not yet defined).  This should not be
  10388.      confused with the mnemonic `set', which is a legitimate M88K
  10389.      instruction.
  10390.  
  10391. `.def SYMBOL, VALUE'
  10392.      This directive is synonymous with `.set' and is presumably provided
  10393.      for compatibility with other M88K assemblers.
  10394.  
  10395. `.bss SYMBOL, LENGTH, ALIGN'
  10396.      Reserve LENGTH bytes in the bss section for a local SYMBOL,
  10397.      aligned to the power of two specified by ALIGN.  LENGTH and ALIGN
  10398.      must be positive absolute expressions.  This directive differs
  10399.      from `.lcomm' only in that it permits you to specify an alignment.
  10400.      *Note `.lcomm': Lcomm.
  10401.  
  10402.  
  10403. 
  10404. File: as.info,  Node: MIPS-Dependent,  Next: MMIX-Dependent,  Prev: M88K-Dependent,  Up: Machine Dependencies
  10405.  
  10406. 8.21 MIPS Dependent Features
  10407. ============================
  10408.  
  10409.    GNU `as' for MIPS architectures supports several different MIPS
  10410. processors, and MIPS ISA levels I through V, MIPS32, and MIPS64.  For
  10411. information about the MIPS instruction set, see `MIPS RISC
  10412. Architecture', by Kane and Heindrich (Prentice-Hall).  For an overview
  10413. of MIPS assembly conventions, see "Appendix D: Assembly Language
  10414. Programming" in the same work.
  10415.  
  10416. * Menu:
  10417.  
  10418. * MIPS Opts::       Assembler options
  10419. * MIPS Object::     ECOFF object code
  10420. * MIPS Stabs::      Directives for debugging information
  10421. * MIPS ISA::        Directives to override the ISA level
  10422. * MIPS symbol sizes::   Directives to override the size of symbols
  10423. * MIPS autoextend::    Directives for extending MIPS 16 bit instructions
  10424. * MIPS insn::        Directive to mark data as an instruction
  10425. * MIPS option stack::    Directives to save and restore options
  10426. * MIPS ASE instruction generation overrides:: Directives to control
  10427.               generation of MIPS ASE instructions
  10428.  
  10429. 
  10430. File: as.info,  Node: MIPS Opts,  Next: MIPS Object,  Up: MIPS-Dependent
  10431.  
  10432. 8.21.1 Assembler options
  10433. ------------------------
  10434.  
  10435. The MIPS configurations of GNU `as' support these special options:
  10436.  
  10437. `-G NUM'
  10438.      This option sets the largest size of an object that can be
  10439.      referenced implicitly with the `gp' register.  It is only accepted
  10440.      for targets that use ECOFF format.  The default value is 8.
  10441.  
  10442. `-EB'
  10443. `-EL'
  10444.      Any MIPS configuration of `as' can select big-endian or
  10445.      little-endian output at run time (unlike the other GNU development
  10446.      tools, which must be configured for one or the other).  Use `-EB'
  10447.      to select big-endian output, and `-EL' for little-endian.
  10448.  
  10449. `-mips1'
  10450. `-mips2'
  10451. `-mips3'
  10452. `-mips4'
  10453. `-mips5'
  10454. `-mips32'
  10455. `-mips32r2'
  10456. `-mips64'
  10457. `-mips64r2'
  10458.      Generate code for a particular MIPS Instruction Set Architecture
  10459.      level.  `-mips1' corresponds to the R2000 and R3000 processors,
  10460.      `-mips2' to the R6000 processor, `-mips3' to the R4000 processor,
  10461.      and `-mips4' to the R8000 and R10000 processors.  `-mips5',
  10462.      `-mips32', `-mips32r2', `-mips64', and `-mips64r2' correspond to
  10463.      generic MIPS V, MIPS32, MIPS32 RELEASE 2, MIPS64, and MIPS64
  10464.      RELEASE 2 ISA processors, respectively.  You can also switch
  10465.      instruction sets during the assembly; see *Note Directives to
  10466.      override the ISA level: MIPS ISA.
  10467.  
  10468. `-mgp32'
  10469. `-mfp32'
  10470.      Some macros have different expansions for 32-bit and 64-bit
  10471.      registers.  The register sizes are normally inferred from the ISA
  10472.      and ABI, but these flags force a certain group of registers to be
  10473.      treated as 32 bits wide at all times.  `-mgp32' controls the size
  10474.      of general-purpose registers and `-mfp32' controls the size of
  10475.      floating-point registers.
  10476.  
  10477.      On some MIPS variants there is a 32-bit mode flag; when this flag
  10478.      is set, 64-bit instructions generate a trap.  Also, some 32-bit
  10479.      OSes only save the 32-bit registers on a context switch, so it is
  10480.      essential never to use the 64-bit registers.
  10481.  
  10482. `-mgp64'
  10483.      Assume that 64-bit general purpose registers are available.  This
  10484.      is provided in the interests of symmetry with -gp32.
  10485.  
  10486. `-mips16'
  10487. `-no-mips16'
  10488.      Generate code for the MIPS 16 processor.  This is equivalent to
  10489.      putting `.set mips16' at the start of the assembly file.
  10490.      `-no-mips16' turns off this option.
  10491.  
  10492. `-mips3d'
  10493. `-no-mips3d'
  10494.      Generate code for the MIPS-3D Application Specific Extension.
  10495.      This tells the assembler to accept MIPS-3D instructions.
  10496.      `-no-mips3d' turns off this option.
  10497.  
  10498. `-mdmx'
  10499. `-no-mdmx'
  10500.      Generate code for the MDMX Application Specific Extension.  This
  10501.      tells the assembler to accept MDMX instructions.  `-no-mdmx' turns
  10502.      off this option.
  10503.  
  10504. `-mfix7000'
  10505. `-mno-fix7000'
  10506.      Cause nops to be inserted if the read of the destination register
  10507.      of an mfhi or mflo instruction occurs in the following two
  10508.      instructions.
  10509.  
  10510. `-mfix-vr4120'
  10511. `-no-mfix-vr4120'
  10512.      Insert nops to work around certain VR4120 errata.  This option is
  10513.      intended to be used on GCC-generated code: it is not designed to
  10514.      catch all problems in hand-written assembler code.
  10515.  
  10516. `-mfix-vr4130'
  10517. `-no-mfix-vr4130'
  10518.      Insert nops to work around the VR4130 `mflo'/`mfhi' errata.
  10519.  
  10520. `-m4010'
  10521. `-no-m4010'
  10522.      Generate code for the LSI R4010 chip.  This tells the assembler to
  10523.      accept the R4010 specific instructions (`addciu', `ffc', etc.),
  10524.      and to not schedule `nop' instructions around accesses to the `HI'
  10525.      and `LO' registers.  `-no-m4010' turns off this option.
  10526.  
  10527. `-m4650'
  10528. `-no-m4650'
  10529.      Generate code for the MIPS R4650 chip.  This tells the assembler
  10530.      to accept the `mad' and `madu' instruction, and to not schedule
  10531.      `nop' instructions around accesses to the `HI' and `LO' registers.
  10532.      `-no-m4650' turns off this option.
  10533.  
  10534. `-m3900'
  10535. `-no-m3900'
  10536. `-m4100'
  10537. `-no-m4100'
  10538.      For each option `-mNNNN', generate code for the MIPS RNNNN chip.
  10539.      This tells the assembler to accept instructions specific to that
  10540.      chip, and to schedule for that chip's hazards.
  10541.  
  10542. `-march=CPU'
  10543.      Generate code for a particular MIPS cpu.  It is exactly equivalent
  10544.      to `-mCPU', except that there are more value of CPU understood.
  10545.      Valid CPU value are:
  10546.  
  10547.           2000, 3000, 3900, 4000, 4010, 4100, 4111, vr4120, vr4130,
  10548.           vr4181, 4300, 4400, 4600, 4650, 5000, rm5200, rm5230, rm5231,
  10549.           rm5261, rm5721, vr5400, vr5500, 6000, rm7000, 8000, rm9000,
  10550.           10000, 12000, mips32-4k, sb1
  10551.  
  10552. `-mtune=CPU'
  10553.      Schedule and tune for a particular MIPS cpu.  Valid CPU values are
  10554.      identical to `-march=CPU'.
  10555.  
  10556. `-mabi=ABI'
  10557.      Record which ABI the source code uses.  The recognized arguments
  10558.      are: `32', `n32', `o64', `64' and `eabi'.
  10559.  
  10560. `-msym32'
  10561. `-mno-sym32'
  10562.      Equivalent to adding `.set sym32' or `.set nosym32' to the
  10563.      beginning of the assembler input.  *Note MIPS symbol sizes::.
  10564.  
  10565. `-nocpp'
  10566.      This option is ignored.  It is accepted for command-line
  10567.      compatibility with other assemblers, which use it to turn off C
  10568.      style preprocessing.  With GNU `as', there is no need for
  10569.      `-nocpp', because the GNU assembler itself never runs the C
  10570.      preprocessor.
  10571.  
  10572. `--construct-floats'
  10573. `--no-construct-floats'
  10574.      The `--no-construct-floats' option disables the construction of
  10575.      double width floating point constants by loading the two halves of
  10576.      the value into the two single width floating point registers that
  10577.      make up the double width register.  This feature is useful if the
  10578.      processor support the FR bit in its status  register, and this bit
  10579.      is known (by the programmer) to be set.  This bit prevents the
  10580.      aliasing of the double width register by the single width
  10581.      registers.
  10582.  
  10583.      By default `--construct-floats' is selected, allowing construction
  10584.      of these floating point constants.
  10585.  
  10586. `--trap'
  10587. `--no-break'
  10588.      `as' automatically macro expands certain division and
  10589.      multiplication instructions to check for overflow and division by
  10590.      zero.  This option causes `as' to generate code to take a trap
  10591.      exception rather than a break exception when an error is detected.
  10592.      The trap instructions are only supported at Instruction Set
  10593.      Architecture level 2 and higher.
  10594.  
  10595. `--break'
  10596. `--no-trap'
  10597.      Generate code to take a break exception rather than a trap
  10598.      exception when an error is detected.  This is the default.
  10599.  
  10600. `-mpdr'
  10601. `-mno-pdr'
  10602.      Control generation of `.pdr' sections.  Off by default on IRIX, on
  10603.      elsewhere.
  10604.  
  10605. `-mshared'
  10606. `-mno-shared'
  10607.      When generating code using the Unix calling conventions (selected
  10608.      by `-KPIC' or `-mcall_shared'), gas will normally generate code
  10609.      which can go into a shared library.  The `-mno-shared' option
  10610.      tells gas to generate code which uses the calling convention, but
  10611.      can not go into a shared library.  The resulting code is slightly
  10612.      more efficient.  This option only affects the handling of the
  10613.      `.cpload' and `.cpsetup' pseudo-ops.
  10614.  
  10615. 
  10616. File: as.info,  Node: MIPS Object,  Next: MIPS Stabs,  Prev: MIPS Opts,  Up: MIPS-Dependent
  10617.  
  10618. 8.21.2 MIPS ECOFF object code
  10619. -----------------------------
  10620.  
  10621. Assembling for a MIPS ECOFF target supports some additional sections
  10622. besides the usual `.text', `.data' and `.bss'.  The additional sections
  10623. are `.rdata', used for read-only data, `.sdata', used for small data,
  10624. and `.sbss', used for small common objects.
  10625.  
  10626.    When assembling for ECOFF, the assembler uses the `$gp' (`$28')
  10627. register to form the address of a "small object".  Any object in the
  10628. `.sdata' or `.sbss' sections is considered "small" in this sense.  For
  10629. external objects, or for objects in the `.bss' section, you can use the
  10630. `gcc' `-G' option to control the size of objects addressed via `$gp';
  10631. the default value is 8, meaning that a reference to any object eight
  10632. bytes or smaller uses `$gp'.  Passing `-G 0' to `as' prevents it from
  10633. using the `$gp' register on the basis of object size (but the assembler
  10634. uses `$gp' for objects in `.sdata' or `sbss' in any case).  The size of
  10635. an object in the `.bss' section is set by the `.comm' or `.lcomm'
  10636. directive that defines it.  The size of an external object may be set
  10637. with the `.extern' directive.  For example, `.extern sym,4' declares
  10638. that the object at `sym' is 4 bytes in length, whie leaving `sym'
  10639. otherwise undefined.
  10640.  
  10641.    Using small ECOFF objects requires linker support, and assumes that
  10642. the `$gp' register is correctly initialized (normally done
  10643. automatically by the startup code).  MIPS ECOFF assembly code must not
  10644. modify the `$gp' register.
  10645.  
  10646. 
  10647. File: as.info,  Node: MIPS Stabs,  Next: MIPS ISA,  Prev: MIPS Object,  Up: MIPS-Dependent
  10648.  
  10649. 8.21.3 Directives for debugging information
  10650. -------------------------------------------
  10651.  
  10652. MIPS ECOFF `as' supports several directives used for generating
  10653. debugging information which are not support by traditional MIPS
  10654. assemblers.  These are `.def', `.endef', `.dim', `.file', `.scl',
  10655. `.size', `.tag', `.type', `.val', `.stabd', `.stabn', and `.stabs'.
  10656. The debugging information generated by the three `.stab' directives can
  10657. only be read by GDB, not by traditional MIPS debuggers (this
  10658. enhancement is required to fully support C++ debugging).  These
  10659. directives are primarily used by compilers, not assembly language
  10660. programmers!
  10661.  
  10662. 
  10663. File: as.info,  Node: MIPS symbol sizes,  Next: MIPS autoextend,  Prev: MIPS ISA,  Up: MIPS-Dependent
  10664.  
  10665. 8.21.4 Directives to override the size of symbols
  10666. -------------------------------------------------
  10667.  
  10668. The n64 ABI allows symbols to have any 64-bit value.  Although this
  10669. provides a great deal of flexibility, it means that some macros have
  10670. much longer expansions than their 32-bit counterparts.  For example,
  10671. the non-PIC expansion of `dla $4,sym' is usually:
  10672.  
  10673.      lui     $4,%highest(sym)
  10674.      lui     $1,%hi(sym)
  10675.      daddiu  $4,$4,%higher(sym)
  10676.      daddiu  $1,$1,%lo(sym)
  10677.      dsll32  $4,$4,0
  10678.      daddu   $4,$4,$1
  10679.  
  10680.    whereas the 32-bit expansion is simply:
  10681.  
  10682.      lui     $4,%hi(sym)
  10683.      daddiu  $4,$4,%lo(sym)
  10684.  
  10685.    n64 code is sometimes constructed in such a way that all symbolic
  10686. constants are known to have 32-bit values, and in such cases, it's
  10687. preferable to use the 32-bit expansion instead of the 64-bit expansion.
  10688.  
  10689.    You can use the `.set sym32' directive to tell the assembler that,
  10690. from this point on, all expressions of the form `SYMBOL' or `SYMBOL +
  10691. OFFSET' have 32-bit values.  For example:
  10692.  
  10693.      .set sym32
  10694.      dla     $4,sym
  10695.      lw      $4,sym+16
  10696.      sw      $4,sym+0x8000($4)
  10697.  
  10698.    will cause the assembler to treat `sym', `sym+16' and `sym+0x8000'
  10699. as 32-bit values.  The handling of non-symbolic addresses is not
  10700. affected.
  10701.  
  10702.    The directive `.set nosym32' ends a `.set sym32' block and reverts
  10703. to the normal behavior.  It is also possible to change the symbol size
  10704. using the command-line options `-msym32' and `-mno-sym32'.
  10705.  
  10706.    These options and directives are always accepted, but at present,
  10707. they have no effect for anything other than n64.
  10708.  
  10709. 
  10710. File: as.info,  Node: MIPS ISA,  Next: MIPS symbol sizes,  Prev: MIPS Stabs,  Up: MIPS-Dependent
  10711.  
  10712. 8.21.5 Directives to override the ISA level
  10713. -------------------------------------------
  10714.  
  10715. GNU `as' supports an additional directive to change the MIPS
  10716. Instruction Set Architecture level on the fly: `.set mipsN'.  N should
  10717. be a number from 0 to 5, or 32, 32r2, 64 or 64r2.  The values other
  10718. than 0 make the assembler accept instructions for the corresponding ISA
  10719. level, from that point on in the assembly.  `.set mipsN' affects not
  10720. only which instructions are permitted, but also how certain macros are
  10721. expanded.  `.set mips0' restores the ISA level to its original level:
  10722. either the level you selected with command line options, or the default
  10723. for your configuration.  You can use this feature to permit specific
  10724. R4000 instructions while assembling in 32 bit mode.  Use this directive
  10725. with care!
  10726.  
  10727.    The directive `.set mips16' puts the assembler into MIPS 16 mode, in
  10728. which it will assemble instructions for the MIPS 16 processor.  Use
  10729. `.set nomips16' to return to normal 32 bit mode.
  10730.  
  10731.    Traditional MIPS assemblers do not support this directive.
  10732.  
  10733. 
  10734. File: as.info,  Node: MIPS autoextend,  Next: MIPS insn,  Prev: MIPS symbol sizes,  Up: MIPS-Dependent
  10735.  
  10736. 8.21.6 Directives for extending MIPS 16 bit instructions
  10737. --------------------------------------------------------
  10738.  
  10739. By default, MIPS 16 instructions are automatically extended to 32 bits
  10740. when necessary.  The directive `.set noautoextend' will turn this off.
  10741. When `.set noautoextend' is in effect, any 32 bit instruction must be
  10742. explicitly extended with the `.e' modifier (e.g., `li.e $4,1000').  The
  10743. directive `.set autoextend' may be used to once again automatically
  10744. extend instructions when necessary.
  10745.  
  10746.    This directive is only meaningful when in MIPS 16 mode.  Traditional
  10747. MIPS assemblers do not support this directive.
  10748.  
  10749. 
  10750. File: as.info,  Node: MIPS insn,  Next: MIPS option stack,  Prev: MIPS autoextend,  Up: MIPS-Dependent
  10751.  
  10752. 8.21.7 Directive to mark data as an instruction
  10753. -----------------------------------------------
  10754.  
  10755. The `.insn' directive tells `as' that the following data is actually
  10756. instructions.  This makes a difference in MIPS 16 mode: when loading
  10757. the address of a label which precedes instructions, `as' automatically
  10758. adds 1 to the value, so that jumping to the loaded address will do the
  10759. right thing.
  10760.  
  10761. 
  10762. File: as.info,  Node: MIPS option stack,  Next: MIPS ASE instruction generation overrides,  Prev: MIPS insn,  Up: MIPS-Dependent
  10763.  
  10764. 8.21.8 Directives to save and restore options
  10765. ---------------------------------------------
  10766.  
  10767. The directives `.set push' and `.set pop' may be used to save and
  10768. restore the current settings for all the options which are controlled
  10769. by `.set'.  The `.set push' directive saves the current settings on a
  10770. stack.  The `.set pop' directive pops the stack and restores the
  10771. settings.
  10772.  
  10773.    These directives can be useful inside an macro which must change an
  10774. option such as the ISA level or instruction reordering but does not want
  10775. to change the state of the code which invoked the macro.
  10776.  
  10777.    Traditional MIPS assemblers do not support these directives.
  10778.  
  10779. 
  10780. File: as.info,  Node: MIPS ASE instruction generation overrides,  Prev: MIPS option stack,  Up: MIPS-Dependent
  10781.  
  10782. 8.21.9 Directives to control generation of MIPS ASE instructions
  10783. ----------------------------------------------------------------
  10784.  
  10785. The directive `.set mips3d' makes the assembler accept instructions
  10786. from the MIPS-3D Application Specific Extension from that point on in
  10787. the assembly.  The `.set nomips3d' directive prevents MIPS-3D
  10788. instructions from being accepted.
  10789.  
  10790.    The directive `.set mdmx' makes the assembler accept instructions
  10791. from the MDMX Application Specific Extension from that point on in the
  10792. assembly.  The `.set nomdmx' directive prevents MDMX instructions from
  10793. being accepted.
  10794.  
  10795.    Traditional MIPS assemblers do not support these directives.
  10796.  
  10797. 
  10798. File: as.info,  Node: MMIX-Dependent,  Next: MSP430-Dependent,  Prev: MIPS-Dependent,  Up: Machine Dependencies
  10799.  
  10800. 8.22 MMIX Dependent Features
  10801. ============================
  10802.  
  10803. * Menu:
  10804.  
  10805. * MMIX-Opts::              Command-line Options
  10806. * MMIX-Expand::            Instruction expansion
  10807. * MMIX-Syntax::            Syntax
  10808. * MMIX-mmixal::           Differences to `mmixal' syntax and semantics
  10809.  
  10810. 
  10811. File: as.info,  Node: MMIX-Opts,  Next: MMIX-Expand,  Up: MMIX-Dependent
  10812.  
  10813. 8.22.1 Command-line Options
  10814. ---------------------------
  10815.  
  10816. The MMIX version of `as' has some machine-dependent options.
  10817.  
  10818.    When `--fixed-special-register-names' is specified, only the register
  10819. names specified in *Note MMIX-Regs:: are recognized in the instructions
  10820. `PUT' and `GET'.
  10821.  
  10822.    You can use the `--globalize-symbols' to make all symbols global.
  10823. This option is useful when splitting up a `mmixal' program into several
  10824. files.
  10825.  
  10826.    The `--gnu-syntax' turns off most syntax compatibility with
  10827. `mmixal'.  Its usability is currently doubtful.
  10828.  
  10829.    The `--relax' option is not fully supported, but will eventually make
  10830. the object file prepared for linker relaxation.
  10831.  
  10832.    If you want to avoid inadvertently calling a predefined symbol and
  10833. would rather get an error, for example when using `as' with a compiler
  10834. or other machine-generated code, specify `--no-predefined-syms'.  This
  10835. turns off built-in predefined definitions of all such symbols,
  10836. including rounding-mode symbols, segment symbols, `BIT' symbols, and
  10837. `TRAP' symbols used in `mmix' "system calls".  It also turns off
  10838. predefined special-register names, except when used in `PUT' and `GET'
  10839. instructions.
  10840.  
  10841.    By default, some instructions are expanded to fit the size of the
  10842. operand or an external symbol (*note MMIX-Expand::).  By passing
  10843. `--no-expand', no such expansion will be done, instead causing errors
  10844. at link time if the operand does not fit.
  10845.  
  10846.    The `mmixal' documentation (*note mmixsite::) specifies that global
  10847. registers allocated with the `GREG' directive (*note MMIX-greg::) and
  10848. initialized to the same non-zero value, will refer to the same global
  10849. register.  This isn't strictly enforceable in `as' since the final
  10850. addresses aren't known until link-time, but it will do an effort unless
  10851. the `--no-merge-gregs' option is specified.  (Register merging isn't
  10852. yet implemented in `ld'.)
  10853.  
  10854.    `as' will warn every time it expands an instruction to fit an
  10855. operand unless the option `-x' is specified.  It is believed that this
  10856. behaviour is more useful than just mimicking `mmixal''s behaviour, in
  10857. which instructions are only expanded if the `-x' option is specified,
  10858. and assembly fails otherwise, when an instruction needs to be expanded.
  10859. It needs to be kept in mind that `mmixal' is both an assembler and
  10860. linker, while `as' will expand instructions that at link stage can be
  10861. contracted.  (Though linker relaxation isn't yet implemented in `ld'.)
  10862. The option `-x' also imples `--linker-allocated-gregs'.
  10863.  
  10864.    If instruction expansion is enabled, `as' can expand a `PUSHJ'
  10865. instruction into a series of instructions.  The shortest expansion is
  10866. to not expand it, but just mark the call as redirectable to a stub,
  10867. which `ld' creates at link-time, but only if the original `PUSHJ'
  10868. instruction is found not to reach the target.  The stub consists of the
  10869. necessary instructions to form a jump to the target.  This happens if
  10870. `as' can assert that the `PUSHJ' instruction can reach such a stub.
  10871. The option `--no-pushj-stubs' disables this shorter expansion, and the
  10872. longer series of instructions is then created at assembly-time.  The
  10873. option `--no-stubs' is a synonym, intended for compatibility with
  10874. future releases, where generation of stubs for other instructions may
  10875. be implemented.
  10876.  
  10877.    Usually a two-operand-expression (*note GREG-base::) without a
  10878. matching `GREG' directive is treated as an error by `as'.  When the
  10879. option `--linker-allocated-gregs' is in effect, they are instead passed
  10880. through to the linker, which will allocate as many global registers as
  10881. is needed.
  10882.  
  10883. 
  10884. File: as.info,  Node: MMIX-Expand,  Next: MMIX-Syntax,  Prev: MMIX-Opts,  Up: MMIX-Dependent
  10885.  
  10886. 8.22.2 Instruction expansion
  10887. ----------------------------
  10888.  
  10889. When `as' encounters an instruction with an operand that is either not
  10890. known or does not fit the operand size of the instruction, `as' (and
  10891. `ld') will expand the instruction into a sequence of instructions
  10892. semantically equivalent to the operand fitting the instruction.
  10893. Expansion will take place for the following instructions:
  10894.  
  10895. `GETA'
  10896.      Expands to a sequence of four instructions: `SETL', `INCML',
  10897.      `INCMH' and `INCH'.  The operand must be a multiple of four.
  10898.  
  10899. Conditional branches
  10900.      A branch instruction is turned into a branch with the complemented
  10901.      condition and prediction bit over five instructions; four
  10902.      instructions setting `$255' to the operand value, which like with
  10903.      `GETA' must be a multiple of four, and a final `GO $255,$255,0'.
  10904.  
  10905. `PUSHJ'
  10906.      Similar to expansion for conditional branches; four instructions
  10907.      set `$255' to the operand value, followed by a `PUSHGO
  10908.      $255,$255,0'.
  10909.  
  10910. `JMP'
  10911.      Similar to conditional branches and `PUSHJ'.  The final instruction
  10912.      is `GO $255,$255,0'.
  10913.  
  10914.    The linker `ld' is expected to shrink these expansions for code
  10915. assembled with `--relax' (though not currently implemented).
  10916.  
  10917. 
  10918. File: as.info,  Node: MMIX-Syntax,  Next: MMIX-mmixal,  Prev: MMIX-Expand,  Up: MMIX-Dependent
  10919.  
  10920. 8.22.3 Syntax
  10921. -------------
  10922.  
  10923. The assembly syntax is supposed to be upward compatible with that
  10924. described in Sections 1.3 and 1.4 of `The Art of Computer Programming,
  10925. Volume 1'.  Draft versions of those chapters as well as other MMIX
  10926. information is located at
  10927. `http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html'.  Most code
  10928. examples from the mmixal package located there should work unmodified
  10929. when assembled and linked as single files, with a few noteworthy
  10930. exceptions (*note MMIX-mmixal::).
  10931.  
  10932.    Before an instruction is emitted, the current location is aligned to
  10933. the next four-byte boundary.  If a label is defined at the beginning of
  10934. the line, its value will be the aligned value.
  10935.  
  10936.    In addition to the traditional hex-prefix `0x', a hexadecimal number
  10937. can also be specified by the prefix character `#'.
  10938.  
  10939.    After all operands to an MMIX instruction or directive have been
  10940. specified, the rest of the line is ignored, treated as a comment.
  10941.  
  10942. * Menu:
  10943.  
  10944. * MMIX-Chars::                Special Characters
  10945. * MMIX-Symbols::        Symbols
  10946. * MMIX-Regs::            Register Names
  10947. * MMIX-Pseudos::        Assembler Directives
  10948.  
  10949. 
  10950. File: as.info,  Node: MMIX-Chars,  Next: MMIX-Symbols,  Up: MMIX-Syntax
  10951.  
  10952. 8.22.3.1 Special Characters
  10953. ...........................
  10954.  
  10955. The characters `*' and `#' are line comment characters; each start a
  10956. comment at the beginning of a line, but only at the beginning of a
  10957. line.  A `#' prefixes a hexadecimal number if found elsewhere on a line.
  10958.  
  10959.    Two other characters, `%' and `!', each start a comment anywhere on
  10960. the line.  Thus you can't use the `modulus' and `not' operators in
  10961. expressions normally associated with these two characters.
  10962.  
  10963.    A `;' is a line separator, treated as a new-line, so separate
  10964. instructions can be specified on a single line.
  10965.  
  10966. 
  10967. File: as.info,  Node: MMIX-Symbols,  Next: MMIX-Regs,  Prev: MMIX-Chars,  Up: MMIX-Syntax
  10968.  
  10969. 8.22.3.2 Symbols
  10970. ................
  10971.  
  10972. The character `:' is permitted in identifiers.  There are two
  10973. exceptions to it being treated as any other symbol character: if a
  10974. symbol begins with `:', it means that the symbol is in the global
  10975. namespace and that the current prefix should not be prepended to that
  10976. symbol (*note MMIX-prefix::).  The `:' is then not considered part of
  10977. the symbol.  For a symbol in the label position (first on a line), a `:'
  10978. at the end of a symbol is silently stripped off.  A label is permitted,
  10979. but not required, to be followed by a `:', as with many other assembly
  10980. formats.
  10981.  
  10982.    The character `@' in an expression, is a synonym for `.', the
  10983. current location.
  10984.  
  10985.    In addition to the common forward and backward local symbol formats
  10986. (*note Symbol Names::), they can be specified with upper-case `B' and
  10987. `F', as in `8B' and `9F'.  A local label defined for the current
  10988. position is written with a `H' appended to the number:
  10989.      3H LDB $0,$1,2
  10990.    This and traditional local-label formats cannot be mixed: a label
  10991. must be defined and referred to using the same format.
  10992.  
  10993.    There's a minor caveat: just as for the ordinary local symbols, the
  10994. local symbols are translated into ordinary symbols using control
  10995. characters are to hide the ordinal number of the symbol.
  10996. Unfortunately, these symbols are not translated back in error messages.
  10997. Thus you may see confusing error messages when local symbols are used.
  10998. Control characters `\003' (control-C) and `\004' (control-D) are used
  10999. for the MMIX-specific local-symbol syntax.
  11000.  
  11001.    The symbol `Main' is handled specially; it is always global.
  11002.  
  11003.    By defining the symbols `__.MMIX.start..text' and
  11004. `__.MMIX.start..data', the address of respectively the `.text' and
  11005. `.data' segments of the final program can be defined, though when
  11006. linking more than one object file, the code or data in the object file
  11007. containing the symbol is not guaranteed to be start at that position;
  11008. just the final executable.  *Note MMIX-loc::.
  11009.  
  11010. 
  11011. File: as.info,  Node: MMIX-Regs,  Next: MMIX-Pseudos,  Prev: MMIX-Symbols,  Up: MMIX-Syntax
  11012.  
  11013. 8.22.3.3 Register names
  11014. .......................
  11015.  
  11016. Local and global registers are specified as `$0' to `$255'.  The
  11017. recognized special register names are `rJ', `rA', `rB', `rC', `rD',
  11018. `rE', `rF', `rG', `rH', `rI', `rK', `rL', `rM', `rN', `rO', `rP', `rQ',
  11019. `rR', `rS', `rT', `rU', `rV', `rW', `rX', `rY', `rZ', `rBB', `rTT',
  11020. `rWW', `rXX', `rYY' and `rZZ'.  A leading `:' is optional for special
  11021. register names.
  11022.  
  11023.    Local and global symbols can be equated to register names and used in
  11024. place of ordinary registers.
  11025.  
  11026.    Similarly for special registers, local and global symbols can be
  11027. used.  Also, symbols equated from numbers and constant expressions are
  11028. allowed in place of a special register, except when either of the
  11029. options `--no-predefined-syms' and `--fixed-special-register-names' are
  11030. specified.  Then only the special register names above are allowed for
  11031. the instructions having a special register operand; `GET' and `PUT'.
  11032.  
  11033. 
  11034. File: as.info,  Node: MMIX-Pseudos,  Prev: MMIX-Regs,  Up: MMIX-Syntax
  11035.  
  11036. 8.22.3.4 Assembler Directives
  11037. .............................
  11038.  
  11039. `LOC'
  11040.      The `LOC' directive sets the current location to the value of the
  11041.      operand field, which may include changing sections.  If the
  11042.      operand is a constant, the section is set to either `.data' if the
  11043.      value is `0x2000000000000000' or larger, else it is set to `.text'.
  11044.      Within a section, the current location may only be changed to
  11045.      monotonically higher addresses.  A LOC expression must be a
  11046.      previously defined symbol or a "pure" constant.
  11047.  
  11048.      An example, which sets the label PREV to the current location, and
  11049.      updates the current location to eight bytes forward:
  11050.           prev LOC @+8
  11051.  
  11052.      When a LOC has a constant as its operand, a symbol
  11053.      `__.MMIX.start..text' or `__.MMIX.start..data' is defined
  11054.      depending on the address as mentioned above.  Each such symbol is
  11055.      interpreted as special by the linker, locating the section at that
  11056.      address.  Note that if multiple files are linked, the first object
  11057.      file with that section will be mapped to that address (not
  11058.      necessarily the file with the LOC definition).
  11059.  
  11060. `LOCAL'
  11061.      Example:
  11062.            LOCAL external_symbol
  11063.            LOCAL 42
  11064.            .local asymbol
  11065.  
  11066.      This directive-operation generates a link-time assertion that the
  11067.      operand does not correspond to a global register.  The operand is
  11068.      an expression that at link-time resolves to a register symbol or a
  11069.      number.  A number is treated as the register having that number.
  11070.      There is one restriction on the use of this directive: the
  11071.      pseudo-directive must be placed in a section with contents, code
  11072.      or data.
  11073.  
  11074. `IS'
  11075.      The `IS' directive:
  11076.           asymbol IS an_expression
  11077.      sets the symbol `asymbol' to `an_expression'.  A symbol may not be
  11078.      set more than once using this directive.  Local labels may be set
  11079.      using this directive, for example:
  11080.           5H IS @+4
  11081.  
  11082. `GREG'
  11083.      This directive reserves a global register, gives it an initial
  11084.      value and optionally gives it a symbolic name.  Some examples:
  11085.  
  11086.           areg GREG
  11087.           breg GREG data_value
  11088.                GREG data_buffer
  11089.                .greg creg, another_data_value
  11090.  
  11091.      The symbolic register name can be used in place of a (non-special)
  11092.      register.  If a value isn't provided, it defaults to zero.  Unless
  11093.      the option `--no-merge-gregs' is specified, non-zero registers
  11094.      allocated with this directive may be eliminated by `as'; another
  11095.      register with the same value used in its place.  Any of the
  11096.      instructions `CSWAP', `GO', `LDA', `LDBU', `LDB', `LDHT', `LDOU',
  11097.      `LDO', `LDSF', `LDTU', `LDT', `LDUNC', `LDVTS', `LDWU', `LDW',
  11098.      `PREGO', `PRELD', `PREST', `PUSHGO', `STBU', `STB', `STCO', `STHT',
  11099.      `STOU', `STSF', `STTU', `STT', `STUNC', `SYNCD', `SYNCID', can
  11100.      have a value nearby an initial value in place of its second and
  11101.      third operands.  Here, "nearby" is defined as within the range
  11102.      0...255 from the initial value of such an allocated register.
  11103.  
  11104.           buffer1 BYTE 0,0,0,0,0
  11105.           buffer2 BYTE 0,0,0,0,0
  11106.            ...
  11107.            GREG buffer1
  11108.            LDOU $42,buffer2
  11109.      In the example above, the `Y' field of the `LDOUI' instruction
  11110.      (LDOU with a constant Z) will be replaced with the global register
  11111.      allocated for `buffer1', and the `Z' field will have the value 5,
  11112.      the offset from `buffer1' to `buffer2'.  The result is equivalent
  11113.      to this code:
  11114.           buffer1 BYTE 0,0,0,0,0
  11115.           buffer2 BYTE 0,0,0,0,0
  11116.            ...
  11117.           tmpreg GREG buffer1
  11118.            LDOU $42,tmpreg,(buffer2-buffer1)
  11119.  
  11120.      Global registers allocated with this directive are allocated in
  11121.      order higher-to-lower within a file.  Other than that, the exact
  11122.      order of register allocation and elimination is undefined.  For
  11123.      example, the order is undefined when more than one file with such
  11124.      directives are linked together.  With the options `-x' and
  11125.      `--linker-allocated-gregs', `GREG' directives for two-operand
  11126.      cases like the one mentioned above can be omitted.  Sufficient
  11127.      global registers will then be allocated by the linker.
  11128.  
  11129. `BYTE'
  11130.      The `BYTE' directive takes a series of operands separated by a
  11131.      comma.  If an operand is a string (*note Strings::), each
  11132.      character of that string is emitted as a byte.  Other operands
  11133.      must be constant expressions without forward references, in the
  11134.      range 0...255.  If you need operands having expressions with
  11135.      forward references, use `.byte' (*note Byte::).  An operand can be
  11136.      omitted, defaulting to a zero value.
  11137.  
  11138. `WYDE'
  11139. `TETRA'
  11140. `OCTA'
  11141.      The directives `WYDE', `TETRA' and `OCTA' emit constants of two,
  11142.      four and eight bytes size respectively.  Before anything else
  11143.      happens for the directive, the current location is aligned to the
  11144.      respective constant-size boundary.  If a label is defined at the
  11145.      beginning of the line, its value will be that after the alignment.
  11146.      A single operand can be omitted, defaulting to a zero value
  11147.      emitted for the directive.  Operands can be expressed as strings
  11148.      (*note Strings::), in which case each character in the string is
  11149.      emitted as a separate constant of the size indicated by the
  11150.      directive.
  11151.  
  11152. `PREFIX'
  11153.      The `PREFIX' directive sets a symbol name prefix to be prepended to
  11154.      all symbols (except local symbols, *note MMIX-Symbols::), that are
  11155.      not prefixed with `:', until the next `PREFIX' directive.  Such
  11156.      prefixes accumulate.  For example,
  11157.            PREFIX a
  11158.            PREFIX b
  11159.           c IS 0
  11160.      defines a symbol `abc' with the value 0.
  11161.  
  11162. `BSPEC'
  11163. `ESPEC'
  11164.      A pair of `BSPEC' and `ESPEC' directives delimit a section of
  11165.      special contents (without specified semantics).  Example:
  11166.            BSPEC 42
  11167.            TETRA 1,2,3
  11168.            ESPEC
  11169.      The single operand to `BSPEC' must be number in the range 0...255.
  11170.      The `BSPEC' number 80 is used by the GNU binutils implementation.
  11171.  
  11172. 
  11173. File: as.info,  Node: MMIX-mmixal,  Prev: MMIX-Syntax,  Up: MMIX-Dependent
  11174.  
  11175. 8.22.4 Differences to `mmixal'
  11176. ------------------------------
  11177.  
  11178. The binutils `as' and `ld' combination has a few differences in
  11179. function compared to `mmixal' (*note mmixsite::).
  11180.  
  11181.    The replacement of a symbol with a GREG-allocated register (*note
  11182. GREG-base::) is not handled the exactly same way in `as' as in
  11183. `mmixal'.  This is apparent in the `mmixal' example file `inout.mms',
  11184. where different registers with different offsets, eventually yielding
  11185. the same address, are used in the first instruction.  This type of
  11186. difference should however not affect the function of any program unless
  11187. it has specific assumptions about the allocated register number.
  11188.  
  11189.    Line numbers (in the `mmo' object format) are currently not
  11190. supported.
  11191.  
  11192.    Expression operator precedence is not that of mmixal: operator
  11193. precedence is that of the C programming language.  It's recommended to
  11194. use parentheses to explicitly specify wanted operator precedence
  11195. whenever more than one type of operators are used.
  11196.  
  11197.    The serialize unary operator `&', the fractional division operator
  11198. `//', the logical not operator `!' and the modulus operator `%' are not
  11199. available.
  11200.  
  11201.    Symbols are not global by default, unless the option
  11202. `--globalize-symbols' is passed.  Use the `.global' directive to
  11203. globalize symbols (*note Global::).
  11204.  
  11205.    Operand syntax is a bit stricter with `as' than `mmixal'.  For
  11206. example, you can't say `addu 1,2,3', instead you must write `addu
  11207. $1,$2,3'.
  11208.  
  11209.    You can't LOC to a lower address than those already visited (i.e.
  11210. "backwards").
  11211.  
  11212.    A LOC directive must come before any emitted code.
  11213.  
  11214.    Predefined symbols are visible as file-local symbols after use.  (In
  11215. the ELF file, that is--the linked mmo file has no notion of a file-local
  11216. symbol.)
  11217.  
  11218.    Some mapping of constant expressions to sections in LOC expressions
  11219. is attempted, but that functionality is easily confused and should be
  11220. avoided unless compatibility with `mmixal' is required.  A LOC
  11221. expression to `0x2000000000000000' or higher, maps to the `.data'
  11222. section and lower addresses map to the `.text' section (*note
  11223. MMIX-loc::).
  11224.  
  11225.    The code and data areas are each contiguous.  Sparse programs with
  11226. far-away LOC directives will take up the same amount of space as a
  11227. contiguous program with zeros filled in the gaps between the LOC
  11228. directives.  If you need sparse programs, you might try and get the
  11229. wanted effect with a linker script and splitting up the code parts into
  11230. sections (*note Section::).  Assembly code for this, to be compatible
  11231. with `mmixal', would look something like:
  11232.       .if 0
  11233.       LOC away_expression
  11234.       .else
  11235.       .section away,"ax"
  11236.       .fi
  11237.    `as' will not execute the LOC directive and `mmixal' ignores the
  11238. lines with `.'.  This construct can be used generally to help
  11239. compatibility.
  11240.  
  11241.    Symbols can't be defined twice-not even to the same value.
  11242.  
  11243.    Instruction mnemonics are recognized case-insensitive, though the
  11244. `IS' and `GREG' pseudo-operations must be specified in upper-case
  11245. characters.
  11246.  
  11247.    There's no unicode support.
  11248.  
  11249.    The following is a list of programs in `mmix.tar.gz', available at
  11250. `http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html', last
  11251. checked with the version dated 2001-08-25 (md5sum
  11252. c393470cfc86fac040487d22d2bf0172) that assemble with `mmixal' but do
  11253. not assemble with `as':
  11254.  
  11255. `silly.mms'
  11256.      LOC to a previous address.
  11257.  
  11258. `sim.mms'
  11259.      Redefines symbol `Done'.
  11260.  
  11261. `test.mms'
  11262.      Uses the serial operator `&'.
  11263.  
  11264. 
  11265. File: as.info,  Node: MSP430-Dependent,  Next: SH-Dependent,  Prev: MMIX-Dependent,  Up: Machine Dependencies
  11266.  
  11267. 8.23 MSP 430 Dependent Features
  11268. ===============================
  11269.  
  11270. * Menu:
  11271.  
  11272. * MSP430 Options::              Options
  11273. * MSP430 Syntax::               Syntax
  11274. * MSP430 Floating Point::       Floating Point
  11275. * MSP430 Directives::           MSP 430 Machine Directives
  11276. * MSP430 Opcodes::              Opcodes
  11277. * MSP430 Profiling Capability::    Profiling Capability
  11278.  
  11279. 
  11280. File: as.info,  Node: MSP430 Options,  Next: MSP430 Syntax,  Up: MSP430-Dependent
  11281.  
  11282. 8.23.1 Options
  11283. --------------
  11284.  
  11285. `as' has only -m flag which selects the mpu arch. Currently has no
  11286. effect.
  11287.  
  11288. 
  11289. File: as.info,  Node: MSP430 Syntax,  Next: MSP430 Floating Point,  Prev: MSP430 Options,  Up: MSP430-Dependent
  11290.  
  11291. 8.23.2 Syntax
  11292. -------------
  11293.  
  11294. * Menu:
  11295.  
  11296. * MSP430-Macros::        Macros
  11297. * MSP430-Chars::                Special Characters
  11298. * MSP430-Regs::                 Register Names
  11299. * MSP430-Ext::            Assembler Extensions
  11300.  
  11301. 
  11302. File: as.info,  Node: MSP430-Macros,  Next: MSP430-Chars,  Up: MSP430 Syntax
  11303.  
  11304. 8.23.2.1 Macros
  11305. ...............
  11306.  
  11307. The macro syntax used on the MSP 430 is like that described in the MSP
  11308. 430 Family Assembler Specification.  Normal `as' macros should still
  11309. work.
  11310.  
  11311.    Additional built-in macros are:
  11312.  
  11313. `llo(exp)'
  11314.      Extracts least significant word from 32-bit expression 'exp'.
  11315.  
  11316. `lhi(exp)'
  11317.      Extracts most significant word from 32-bit expression 'exp'.
  11318.  
  11319. `hlo(exp)'
  11320.      Extracts 3rd word from 64-bit expression 'exp'.
  11321.  
  11322. `hhi(exp)'
  11323.      Extracts 4rd word from 64-bit expression 'exp'.
  11324.  
  11325.  
  11326.    They normally being used as an immediate source operand.
  11327.          mov    #llo(1), r10    ;    == mov    #1, r10
  11328.          mov    #lhi(1), r10    ;    == mov    #0, r10
  11329.  
  11330. 
  11331. File: as.info,  Node: MSP430-Chars,  Next: MSP430-Regs,  Prev: MSP430-Macros,  Up: MSP430 Syntax
  11332.  
  11333. 8.23.2.2 Special Characters
  11334. ...........................
  11335.  
  11336. `;' is the line comment character.
  11337.  
  11338.    The character `$' in jump instructions indicates current location and
  11339. implemented only for TI syntax compatibility.
  11340.  
  11341. 
  11342. File: as.info,  Node: MSP430-Regs,  Next: MSP430-Ext,  Prev: MSP430-Chars,  Up: MSP430 Syntax
  11343.  
  11344. 8.23.2.3 Register Names
  11345. .......................
  11346.  
  11347. General-purpose registers are represented by predefined symbols of the
  11348. form `rN' (for global registers), where N represents a number between
  11349. `0' and `15'.  The leading letters may be in either upper or lower
  11350. case; for example, `r13' and `R7' are both valid register names.
  11351.  
  11352.    Register names `PC', `SP' and `SR' cannot be used as register names
  11353. and will be treated as variables. Use `r0', `r1', and `r2' instead.
  11354.  
  11355. 
  11356. File: as.info,  Node: MSP430-Ext,  Prev: MSP430-Regs,  Up: MSP430 Syntax
  11357.  
  11358. 8.23.2.4 Assembler Extensions
  11359. .............................
  11360.  
  11361. `@rN'
  11362.      As destination operand being treated as `0(rn)'
  11363.  
  11364. `0(rN)'
  11365.      As source operand being treated as `@rn'
  11366.  
  11367. `jCOND +N'
  11368.      Skips next N bytes followed by jump instruction and equivalent to
  11369.      `jCOND $+N+2'
  11370.  
  11371.  
  11372.    Also, there are some instructions, which cannot be found in other
  11373. assemblers.  These are branch instructions, which has different opcodes
  11374. upon jump distance.  They all got PC relative addressing mode.
  11375.  
  11376. `beq label'
  11377.      A polymorph instruction which is `jeq label' in case if jump
  11378.      distance within allowed range for cpu's jump instruction. If not,
  11379.      this unrolls into a sequence of
  11380.             jne $+6
  11381.             br  label
  11382.  
  11383. `bne label'
  11384.      A polymorph instruction which is `jne label' or `jeq +4; br label'
  11385.  
  11386. `blt label'
  11387.      A polymorph instruction which is `jl label' or `jge +4; br label'
  11388.  
  11389. `bltn label'
  11390.      A polymorph instruction which is `jn label' or `jn +2; jmp +4; br
  11391.      label'
  11392.  
  11393. `bltu label'
  11394.      A polymorph instruction which is `jlo label' or `jhs +2; br label'
  11395.  
  11396. `bge label'
  11397.      A polymorph instruction which is `jge label' or `jl +4; br label'
  11398.  
  11399. `bgeu label'
  11400.      A polymorph instruction which is `jhs label' or `jlo +4; br label'
  11401.  
  11402. `bgt label'
  11403.      A polymorph instruction which is `jeq +2; jge label' or `jeq +6;
  11404.      jl  +4; br label'
  11405.  
  11406. `bgtu label'
  11407.      A polymorph instruction which is `jeq +2; jhs label' or `jeq +6;
  11408.      jlo +4; br label'
  11409.  
  11410. `bleu label'
  11411.      A polymorph instruction which is `jeq label; jlo label' or `jeq
  11412.      +2; jhs +4; br label'
  11413.  
  11414. `ble label'
  11415.      A polymorph instruction which is `jeq label; jl  label' or `jeq
  11416.      +2; jge +4; br label'
  11417.  
  11418. `jump label'
  11419.      A polymorph instruction which is `jmp label' or `br label'
  11420.  
  11421. 
  11422. File: as.info,  Node: MSP430 Floating Point,  Next: MSP430 Directives,  Prev: MSP430 Syntax,  Up: MSP430-Dependent
  11423.  
  11424. 8.23.3 Floating Point
  11425. ---------------------
  11426.  
  11427. The MSP 430 family uses IEEE 32-bit floating-point numbers.
  11428.  
  11429. 
  11430. File: as.info,  Node: MSP430 Directives,  Next: MSP430 Opcodes,  Prev: MSP430 Floating Point,  Up: MSP430-Dependent
  11431.  
  11432. 8.23.4 MSP 430 Machine Directives
  11433. ---------------------------------
  11434.  
  11435. `.file'
  11436.      This directive is ignored; it is accepted for compatibility with
  11437.      other MSP 430 assemblers.
  11438.  
  11439.           _Warning:_ in other versions of the GNU assembler, `.file' is
  11440.           used for the directive called `.app-file' in the MSP 430
  11441.           support.
  11442.  
  11443. `.line'
  11444.      This directive is ignored; it is accepted for compatibility with
  11445.      other MSP 430 assemblers.
  11446.  
  11447. `.arch'
  11448.      Currently this directive is ignored; it is accepted for
  11449.      compatibility with other MSP 430 assemblers.
  11450.  
  11451. `.profiler'
  11452.      This directive instructs assembler to add new profile entry to the
  11453.      object file.
  11454.  
  11455.  
  11456. 
  11457. File: as.info,  Node: MSP430 Opcodes,  Next: MSP430 Profiling Capability,  Prev: MSP430 Directives,  Up: MSP430-Dependent
  11458.  
  11459. 8.23.5 Opcodes
  11460. --------------
  11461.  
  11462. `as' implements all the standard MSP 430 opcodes.  No additional
  11463. pseudo-instructions are needed on this family.
  11464.  
  11465.    For information on the 430 machine instruction set, see `MSP430
  11466. User's Manual, document slau049b', Texas Instrument, Inc.
  11467.  
  11468. 
  11469. File: as.info,  Node: MSP430 Profiling Capability,  Prev: MSP430 Opcodes,  Up: MSP430-Dependent
  11470.  
  11471. 8.23.6 Profiling Capability
  11472. ---------------------------
  11473.  
  11474. It is a performance hit to use gcc's profiling approach for this tiny
  11475. target.  Even more - jtag hardware facility does not perform any
  11476. profiling functions.  However we've got gdb's built-in simulator where
  11477. we can do anything.
  11478.  
  11479.    We define new section `.profiler' which holds all profiling
  11480. information.  We define new pseudo operation `.profiler' which will
  11481. instruct assembler to add new profile entry to the object file. Profile
  11482. should take place at the present address.
  11483.  
  11484.    Pseudo operation format:
  11485.  
  11486.    `.profiler flags,function_to_profile [, cycle_corrector, extra]'
  11487.  
  11488.    where:
  11489.  
  11490.           `flags' is a combination of the following characters:
  11491.  
  11492.     `s'
  11493.           function entry
  11494.  
  11495.     `x'
  11496.           function exit
  11497.  
  11498.     `i'
  11499.           function is in init section
  11500.  
  11501.     `f'
  11502.           function is in fini section
  11503.  
  11504.     `l'
  11505.           library call
  11506.  
  11507.     `c'
  11508.           libc standard call
  11509.  
  11510.     `d'
  11511.           stack value demand
  11512.  
  11513.     `I'
  11514.           interrupt service routine
  11515.  
  11516.     `P'
  11517.           prologue start
  11518.  
  11519.     `p'
  11520.           prologue end
  11521.  
  11522.     `E'
  11523.           epilogue start
  11524.  
  11525.     `e'
  11526.           epilogue end
  11527.  
  11528.     `j'
  11529.           long jump / sjlj unwind
  11530.  
  11531.     `a'
  11532.           an arbitrary code fragment
  11533.  
  11534.     `t'
  11535.           extra parameter saved (a constant value like frame size)
  11536.  
  11537. `function_to_profile'
  11538.      a function address
  11539.  
  11540. `cycle_corrector'
  11541.      a value which should be added to the cycle counter, zero if
  11542.      omitted.
  11543.  
  11544. `extra'
  11545.      any extra parameter, zero if omitted.
  11546.  
  11547.  
  11548.    For example:
  11549.      .global fxx
  11550.      .type fxx,@function
  11551.      fxx:
  11552.      .LFrameOffset_fxx=0x08
  11553.      .profiler "scdP", fxx     ; function entry.
  11554.                    ; we also demand stack value to be saved
  11555.        push r11
  11556.        push r10
  11557.        push r9
  11558.        push r8
  11559.      .profiler "cdpt",fxx,0, .LFrameOffset_fxx  ; check stack value at this point
  11560.                            ; (this is a prologue end)
  11561.                            ; note, that spare var filled with
  11562.                            ; the farme size
  11563.        mov r15,r8
  11564.      ...
  11565.      .profiler cdE,fxx         ; check stack
  11566.        pop r8
  11567.        pop r9
  11568.        pop r10
  11569.        pop r11
  11570.      .profiler xcde,fxx,3      ; exit adds 3 to the cycle counter
  11571.        ret                     ; cause 'ret' insn takes 3 cycles
  11572.  
  11573. 
  11574. File: as.info,  Node: PDP-11-Dependent,  Next: PJ-Dependent,  Prev: SH64-Dependent,  Up: Machine Dependencies
  11575.  
  11576. 8.24 PDP-11 Dependent Features
  11577. ==============================
  11578.  
  11579. * Menu:
  11580.  
  11581. * PDP-11-Options::        Options
  11582. * PDP-11-Pseudos::        Assembler Directives
  11583. * PDP-11-Syntax::        DEC Syntax versus BSD Syntax
  11584. * PDP-11-Mnemonics::        Instruction Naming
  11585. * PDP-11-Synthetic::        Synthetic Instructions
  11586.  
  11587. 
  11588. File: as.info,  Node: PDP-11-Options,  Next: PDP-11-Pseudos,  Up: PDP-11-Dependent
  11589.  
  11590. 8.24.1 Options
  11591. --------------
  11592.  
  11593. The PDP-11 version of `as' has a rich set of machine dependent options.
  11594.  
  11595. 8.24.1.1 Code Generation Options
  11596. ................................
  11597.  
  11598. `-mpic | -mno-pic'
  11599.      Generate position-independent (or position-dependent) code.
  11600.  
  11601.      The default is to generate position-independent code.
  11602.  
  11603. 8.24.1.2 Instruction Set Extension Options
  11604. ..........................................
  11605.  
  11606. These options enables or disables the use of extensions over the base
  11607. line instruction set as introduced by the first PDP-11 CPU: the KA11.
  11608. Most options come in two variants: a `-m'EXTENSION that enables
  11609. EXTENSION, and a `-mno-'EXTENSION that disables EXTENSION.
  11610.  
  11611.    The default is to enable all extensions.
  11612.  
  11613. `-mall | -mall-extensions'
  11614.      Enable all instruction set extensions.
  11615.  
  11616. `-mno-extensions'
  11617.      Disable all instruction set extensions.
  11618.  
  11619. `-mcis | -mno-cis'
  11620.      Enable (or disable) the use of the commercial instruction set,
  11621.      which consists of these instructions: `ADDNI', `ADDN', `ADDPI',
  11622.      `ADDP', `ASHNI', `ASHN', `ASHPI', `ASHP', `CMPCI', `CMPC',
  11623.      `CMPNI', `CMPN', `CMPPI', `CMPP', `CVTLNI', `CVTLN', `CVTLPI',
  11624.      `CVTLP', `CVTNLI', `CVTNL', `CVTNPI', `CVTNP', `CVTPLI', `CVTPL',
  11625.      `CVTPNI', `CVTPN', `DIVPI', `DIVP', `L2DR', `L3DR', `LOCCI',
  11626.      `LOCC', `MATCI', `MATC', `MOVCI', `MOVC', `MOVRCI', `MOVRC',
  11627.      `MOVTCI', `MOVTC', `MULPI', `MULP', `SCANCI', `SCANC', `SKPCI',
  11628.      `SKPC', `SPANCI', `SPANC', `SUBNI', `SUBN', `SUBPI', and `SUBP'.
  11629.  
  11630. `-mcsm | -mno-csm'
  11631.      Enable (or disable) the use of the `CSM' instruction.
  11632.  
  11633. `-meis | -mno-eis'
  11634.      Enable (or disable) the use of the extended instruction set, which
  11635.      consists of these instructions: `ASHC', `ASH', `DIV', `MARK',
  11636.      `MUL', `RTT', `SOB' `SXT', and `XOR'.
  11637.  
  11638. `-mfis | -mkev11'
  11639. `-mno-fis | -mno-kev11'
  11640.      Enable (or disable) the use of the KEV11 floating-point
  11641.      instructions: `FADD', `FDIV', `FMUL', and `FSUB'.
  11642.  
  11643. `-mfpp | -mfpu | -mfp-11'
  11644. `-mno-fpp | -mno-fpu | -mno-fp-11'
  11645.      Enable (or disable) the use of FP-11 floating-point instructions:
  11646.      `ABSF', `ADDF', `CFCC', `CLRF', `CMPF', `DIVF', `LDCFF', `LDCIF',
  11647.      `LDEXP', `LDF', `LDFPS', `MODF', `MULF', `NEGF', `SETD', `SETF',
  11648.      `SETI', `SETL', `STCFF', `STCFI', `STEXP', `STF', `STFPS', `STST',
  11649.      `SUBF', and `TSTF'.
  11650.  
  11651. `-mlimited-eis | -mno-limited-eis'
  11652.      Enable (or disable) the use of the limited extended instruction
  11653.      set: `MARK', `RTT', `SOB', `SXT', and `XOR'.
  11654.  
  11655.      The -mno-limited-eis options also implies -mno-eis.
  11656.  
  11657. `-mmfpt | -mno-mfpt'
  11658.      Enable (or disable) the use of the `MFPT' instruction.
  11659.  
  11660. `-mmultiproc | -mno-multiproc'
  11661.      Enable (or disable) the use of multiprocessor instructions:
  11662.      `TSTSET' and `WRTLCK'.
  11663.  
  11664. `-mmxps | -mno-mxps'
  11665.      Enable (or disable) the use of the `MFPS' and `MTPS' instructions.
  11666.  
  11667. `-mspl | -mno-spl'
  11668.      Enable (or disable) the use of the `SPL' instruction.
  11669.  
  11670.      Enable (or disable) the use of the microcode instructions: `LDUB',
  11671.      `MED', and `XFC'.
  11672.  
  11673. 8.24.1.3 CPU Model Options
  11674. ..........................
  11675.  
  11676. These options enable the instruction set extensions supported by a
  11677. particular CPU, and disables all other extensions.
  11678.  
  11679. `-mka11'
  11680.      KA11 CPU.  Base line instruction set only.
  11681.  
  11682. `-mkb11'
  11683.      KB11 CPU.  Enable extended instruction set and `SPL'.
  11684.  
  11685. `-mkd11a'
  11686.      KD11-A CPU.  Enable limited extended instruction set.
  11687.  
  11688. `-mkd11b'
  11689.      KD11-B CPU.  Base line instruction set only.
  11690.  
  11691. `-mkd11d'
  11692.      KD11-D CPU.  Base line instruction set only.
  11693.  
  11694. `-mkd11e'
  11695.      KD11-E CPU.  Enable extended instruction set, `MFPS', and `MTPS'.
  11696.  
  11697. `-mkd11f | -mkd11h | -mkd11q'
  11698.      KD11-F, KD11-H, or KD11-Q CPU.  Enable limited extended
  11699.      instruction set, `MFPS', and `MTPS'.
  11700.  
  11701. `-mkd11k'
  11702.      KD11-K CPU.  Enable extended instruction set, `LDUB', `MED',
  11703.      `MFPS', `MFPT', `MTPS', and `XFC'.
  11704.  
  11705. `-mkd11z'
  11706.      KD11-Z CPU.  Enable extended instruction set, `CSM', `MFPS',
  11707.      `MFPT', `MTPS', and `SPL'.
  11708.  
  11709. `-mf11'
  11710.      F11 CPU.  Enable extended instruction set, `MFPS', `MFPT', and
  11711.      `MTPS'.
  11712.  
  11713. `-mj11'
  11714.      J11 CPU.  Enable extended instruction set, `CSM', `MFPS', `MFPT',
  11715.      `MTPS', `SPL', `TSTSET', and `WRTLCK'.
  11716.  
  11717. `-mt11'
  11718.      T11 CPU.  Enable limited extended instruction set, `MFPS', and
  11719.      `MTPS'.
  11720.  
  11721. 8.24.1.4 Machine Model Options
  11722. ..............................
  11723.  
  11724. These options enable the instruction set extensions supported by a
  11725. particular machine model, and disables all other extensions.
  11726.  
  11727. `-m11/03'
  11728.      Same as `-mkd11f'.
  11729.  
  11730. `-m11/04'
  11731.      Same as `-mkd11d'.
  11732.  
  11733. `-m11/05 | -m11/10'
  11734.      Same as `-mkd11b'.
  11735.  
  11736. `-m11/15 | -m11/20'
  11737.      Same as `-mka11'.
  11738.  
  11739. `-m11/21'
  11740.      Same as `-mt11'.
  11741.  
  11742. `-m11/23 | -m11/24'
  11743.      Same as `-mf11'.
  11744.  
  11745. `-m11/34'
  11746.      Same as `-mkd11e'.
  11747.  
  11748. `-m11/34a'
  11749.      Ame as `-mkd11e' `-mfpp'.
  11750.  
  11751. `-m11/35 | -m11/40'
  11752.      Same as `-mkd11a'.
  11753.  
  11754. `-m11/44'
  11755.      Same as `-mkd11z'.
  11756.  
  11757. `-m11/45 | -m11/50 | -m11/55 | -m11/70'
  11758.      Same as `-mkb11'.
  11759.  
  11760. `-m11/53 | -m11/73 | -m11/83 | -m11/84 | -m11/93 | -m11/94'
  11761.      Same as `-mj11'.
  11762.  
  11763. `-m11/60'
  11764.      Same as `-mkd11k'.
  11765.  
  11766. 
  11767. File: as.info,  Node: PDP-11-Pseudos,  Next: PDP-11-Syntax,  Prev: PDP-11-Options,  Up: PDP-11-Dependent
  11768.  
  11769. 8.24.2 Assembler Directives
  11770. ---------------------------
  11771.  
  11772. The PDP-11 version of `as' has a few machine dependent assembler
  11773. directives.
  11774.  
  11775. `.bss'
  11776.      Switch to the `bss' section.
  11777.  
  11778. `.even'
  11779.      Align the location counter to an even number.
  11780.  
  11781. 
  11782. File: as.info,  Node: PDP-11-Syntax,  Next: PDP-11-Mnemonics,  Prev: PDP-11-Pseudos,  Up: PDP-11-Dependent
  11783.  
  11784. 8.24.3 PDP-11 Assembly Language Syntax
  11785. --------------------------------------
  11786.  
  11787. `as' supports both DEC syntax and BSD syntax.  The only difference is
  11788. that in DEC syntax, a `#' character is used to denote an immediate
  11789. constants, while in BSD syntax the character for this purpose is `$'.
  11790.  
  11791.    eneral-purpose registers are named `r0' through `r7'.  Mnemonic
  11792. alternatives for `r6' and `r7' are `sp' and `pc', respectively.
  11793.  
  11794.    Floating-point registers are named `ac0' through `ac3', or
  11795. alternatively `fr0' through `fr3'.
  11796.  
  11797.    Comments are started with a `#' or a `/' character, and extend to
  11798. the end of the line.  (FIXME: clash with immediates?)
  11799.  
  11800. 
  11801. File: as.info,  Node: PDP-11-Mnemonics,  Next: PDP-11-Synthetic,  Prev: PDP-11-Syntax,  Up: PDP-11-Dependent
  11802.  
  11803. 8.24.4 Instruction Naming
  11804. -------------------------
  11805.  
  11806. Some instructions have alternative names.
  11807.  
  11808. `BCC'
  11809.      `BHIS'
  11810.  
  11811. `BCS'
  11812.      `BLO'
  11813.  
  11814. `L2DR'
  11815.      `L2D'
  11816.  
  11817. `L3DR'
  11818.      `L3D'
  11819.  
  11820. `SYS'
  11821.      `TRAP'
  11822.  
  11823. 
  11824. File: as.info,  Node: PDP-11-Synthetic,  Prev: PDP-11-Mnemonics,  Up: PDP-11-Dependent
  11825.  
  11826. 8.24.5 Synthetic Instructions
  11827. -----------------------------
  11828.  
  11829. The `JBR' and `J'CC synthetic instructions are not supported yet.
  11830.  
  11831. 
  11832. File: as.info,  Node: PJ-Dependent,  Next: PPC-Dependent,  Prev: PDP-11-Dependent,  Up: Machine Dependencies
  11833.  
  11834. 8.25 picoJava Dependent Features
  11835. ================================
  11836.  
  11837. * Menu:
  11838.  
  11839. * PJ Options::              Options
  11840.  
  11841. 
  11842. File: as.info,  Node: PJ Options,  Up: PJ-Dependent
  11843.  
  11844. 8.25.1 Options
  11845. --------------
  11846.  
  11847. `as' has two additional command-line options for the picoJava
  11848. architecture.
  11849. `-ml'
  11850.      This option selects little endian data output.
  11851.  
  11852. `-mb'
  11853.      This option selects big endian data output.
  11854.  
  11855. 
  11856. File: as.info,  Node: PPC-Dependent,  Next: Sparc-Dependent,  Prev: PJ-Dependent,  Up: Machine Dependencies
  11857.  
  11858. 8.26 PowerPC Dependent Features
  11859. ===============================
  11860.  
  11861. * Menu:
  11862.  
  11863. * PowerPC-Opts::                Options
  11864. * PowerPC-Pseudo::              PowerPC Assembler Directives
  11865.  
  11866. 
  11867. File: as.info,  Node: PowerPC-Opts,  Next: PowerPC-Pseudo,  Up: PPC-Dependent
  11868.  
  11869. 8.26.1 Options
  11870. --------------
  11871.  
  11872. The PowerPC chip family includes several successive levels, using the
  11873. same core instruction set, but including a few additional instructions
  11874. at each level.  There are exceptions to this however.  For details on
  11875. what instructions each variant supports, please see the chip's
  11876. architecture reference manual.
  11877.  
  11878.    The following table lists all available PowerPC options.
  11879.  
  11880. `-mpwrx | -mpwr2'
  11881.      Generate code for POWER/2 (RIOS2).
  11882.  
  11883. `-mpwr'
  11884.      Generate code for POWER (RIOS1)
  11885.  
  11886. `-m601'
  11887.      Generate code for PowerPC 601.
  11888.  
  11889. `-mppc, -mppc32, -m603, -m604'
  11890.      Generate code for PowerPC 603/604.
  11891.  
  11892. `-m403, -m405'
  11893.      Generate code for PowerPC 403/405.
  11894.  
  11895. `-m440'
  11896.      Generate code for PowerPC 440.  BookE and some 405 instructions.
  11897.  
  11898. `-m7400, -m7410, -m7450, -m7455'
  11899.      Generate code for PowerPC 7400/7410/7450/7455.
  11900.  
  11901. `-mppc64, -m620'
  11902.      Generate code for PowerPC 620/625/630.
  11903.  
  11904. `-mppc64bridge'
  11905.      Generate code for PowerPC 64, including bridge insns.
  11906.  
  11907. `-mbooke64'
  11908.      Generate code for 64-bit BookE.
  11909.  
  11910. `-mbooke, mbooke32'
  11911.      Generate code for 32-bit BookE.
  11912.  
  11913. `-maltivec'
  11914.      Generate code for processors with AltiVec instructions.
  11915.  
  11916. `-mpower4'
  11917.      Generate code for Power4 architecture.
  11918.  
  11919. `-mcom'
  11920.      Generate code Power/PowerPC common instructions.
  11921.  
  11922. `-many'
  11923.      Generate code for any architecture (PWR/PWRX/PPC).
  11924.  
  11925. `-mregnames'
  11926.      Allow symbolic names for registers.
  11927.  
  11928. `-mno-regnames'
  11929.      Do not allow symbolic names for registers.
  11930.  
  11931. `-mrelocatable'
  11932.      Support for GCC's -mrelocatble option.
  11933.  
  11934. `-mrelocatable-lib'
  11935.      Support for GCC's -mrelocatble-lib option.
  11936.  
  11937. `-memb'
  11938.      Set PPC_EMB bit in ELF flags.
  11939.  
  11940. `-mlittle, -mlittle-endian'
  11941.      Generate code for a little endian machine.
  11942.  
  11943. `-mbig, -mbig-endian'
  11944.      Generate code for a big endian machine.
  11945.  
  11946. `-msolaris'
  11947.      Generate code for Solaris.
  11948.  
  11949. `-mno-solaris'
  11950.      Do not generate code for Solaris.
  11951.  
  11952. 
  11953. File: as.info,  Node: PowerPC-Pseudo,  Prev: PowerPC-Opts,  Up: PPC-Dependent
  11954.  
  11955. 8.26.2 PowerPC Assembler Directives
  11956. -----------------------------------
  11957.  
  11958. A number of assembler directives are available for PowerPC.  The
  11959. following table is far from complete.
  11960.  
  11961. `.machine "string"'
  11962.      This directive allows you to change the machine for which code is
  11963.      generated.  `"string"' may be any of the -m cpu selection options
  11964.      (without the -m) enclosed in double quotes, `"push"', or `"pop"'.
  11965.      `.machine "push"' saves the currently selected cpu, which may be
  11966.      restored with `.machine "pop"'.
  11967.  
  11968. 
  11969. File: as.info,  Node: SH-Dependent,  Next: SH64-Dependent,  Prev: MSP430-Dependent,  Up: Machine Dependencies
  11970.  
  11971. 8.27 Renesas / SuperH SH Dependent Features
  11972. ===========================================
  11973.  
  11974. * Menu:
  11975.  
  11976. * SH Options::              Options
  11977. * SH Syntax::               Syntax
  11978. * SH Floating Point::       Floating Point
  11979. * SH Directives::           SH Machine Directives
  11980. * SH Opcodes::              Opcodes
  11981.  
  11982. 
  11983. File: as.info,  Node: SH Options,  Next: SH Syntax,  Up: SH-Dependent
  11984.  
  11985. 8.27.1 Options
  11986. --------------
  11987.  
  11988. `as' has following command-line options for the Renesas (formerly
  11989. Hitachi) / SuperH SH family.
  11990.  
  11991. `-little'
  11992.      Generate little endian code.
  11993.  
  11994. `-big'
  11995.      Generate big endian code.
  11996.  
  11997. `-relax'
  11998.      Alter jump instructions for long displacements.
  11999.  
  12000. `-small'
  12001.      Align sections to 4 byte boundaries, not 16.
  12002.  
  12003. `-dsp'
  12004.      Enable sh-dsp insns, and disable sh3e / sh4 insns.
  12005.  
  12006. `-renesas'
  12007.      Disable optimization with section symbol for compatibility with
  12008.      Renesas assembler.
  12009.  
  12010. `-isa=sh4 | sh4a'
  12011.      Specify the sh4 or sh4a instruction set.
  12012.  
  12013. `-isa=dsp'
  12014.      Enable sh-dsp insns, and disable sh3e / sh4 insns.
  12015.  
  12016. `-isa=fp'
  12017.      Enable sh2e, sh3e, sh4, and sh4a insn sets.
  12018.  
  12019. `-isa=all'
  12020.      Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
  12021.  
  12022.  
  12023. 
  12024. File: as.info,  Node: SH Syntax,  Next: SH Floating Point,  Prev: SH Options,  Up: SH-Dependent
  12025.  
  12026. 8.27.2 Syntax
  12027. -------------
  12028.  
  12029. * Menu:
  12030.  
  12031. * SH-Chars::                Special Characters
  12032. * SH-Regs::                 Register Names
  12033. * SH-Addressing::           Addressing Modes
  12034.  
  12035. 
  12036. File: as.info,  Node: SH-Chars,  Next: SH-Regs,  Up: SH Syntax
  12037.  
  12038. 8.27.2.1 Special Characters
  12039. ...........................
  12040.  
  12041. `!' is the line comment character.
  12042.  
  12043.    You can use `;' instead of a newline to separate statements.
  12044.  
  12045.    Since `$' has no special meaning, you may use it in symbol names.
  12046.  
  12047. 
  12048. File: as.info,  Node: SH-Regs,  Next: SH-Addressing,  Prev: SH-Chars,  Up: SH Syntax
  12049.  
  12050. 8.27.2.2 Register Names
  12051. .......................
  12052.  
  12053. You can use the predefined symbols `r0', `r1', `r2', `r3', `r4', `r5',
  12054. `r6', `r7', `r8', `r9', `r10', `r11', `r12', `r13', `r14', and `r15' to
  12055. refer to the SH registers.
  12056.  
  12057.    The SH also has these control registers:
  12058.  
  12059. `pr'
  12060.      procedure register (holds return address)
  12061.  
  12062. `pc'
  12063.      program counter
  12064.  
  12065. `mach'
  12066. `macl'
  12067.      high and low multiply accumulator registers
  12068.  
  12069. `sr'
  12070.      status register
  12071.  
  12072. `gbr'
  12073.      global base register
  12074.  
  12075. `vbr'
  12076.      vector base register (for interrupt vectors)
  12077.  
  12078. 
  12079. File: as.info,  Node: SH-Addressing,  Prev: SH-Regs,  Up: SH Syntax
  12080.  
  12081. 8.27.2.3 Addressing Modes
  12082. .........................
  12083.  
  12084. `as' understands the following addressing modes for the SH.  `RN' in
  12085. the following refers to any of the numbered registers, but _not_ the
  12086. control registers.
  12087.  
  12088. `RN'
  12089.      Register direct
  12090.  
  12091. `@RN'
  12092.      Register indirect
  12093.  
  12094. `@-RN'
  12095.      Register indirect with pre-decrement
  12096.  
  12097. `@RN+'
  12098.      Register indirect with post-increment
  12099.  
  12100. `@(DISP, RN)'
  12101.      Register indirect with displacement
  12102.  
  12103. `@(R0, RN)'
  12104.      Register indexed
  12105.  
  12106. `@(DISP, GBR)'
  12107.      `GBR' offset
  12108.  
  12109. `@(R0, GBR)'
  12110.      GBR indexed
  12111.  
  12112. `ADDR'
  12113. `@(DISP, PC)'
  12114.      PC relative address (for branch or for addressing memory).  The
  12115.      `as' implementation allows you to use the simpler form ADDR
  12116.      anywhere a PC relative address is called for; the alternate form
  12117.      is supported for compatibility with other assemblers.
  12118.  
  12119. `#IMM'
  12120.      Immediate data
  12121.  
  12122. 
  12123. File: as.info,  Node: SH Floating Point,  Next: SH Directives,  Prev: SH Syntax,  Up: SH-Dependent
  12124.  
  12125. 8.27.3 Floating Point
  12126. ---------------------
  12127.  
  12128. SH2E, SH3E and SH4 groups have on-chip floating-point unit (FPU). Other
  12129. SH groups can use `.float' directive to generate IEEE floating-point
  12130. numbers.
  12131.  
  12132.    SH2E and SH3E support single-precision floating point calculations as
  12133. well as entirely PCAPI compatible emulation of double-precision
  12134. floating point calculations. SH2E and SH3E instructions are a subset of
  12135. the floating point calculations conforming to the IEEE754 standard.
  12136.  
  12137.    In addition to single-precision and double-precision floating-point
  12138. operation capability, the on-chip FPU of SH4 has a 128-bit graphic
  12139. engine that enables 32-bit floating-point data to be processed 128 bits
  12140. at a time. It also supports 4 * 4 array operations and inner product
  12141. operations. Also, a superscalar architecture is employed that enables
  12142. simultaneous execution of two instructions (including FPU
  12143. instructions), providing performance of up to twice that of
  12144. conventional architectures at the same frequency.
  12145.  
  12146. 
  12147. File: as.info,  Node: SH Directives,  Next: SH Opcodes,  Prev: SH Floating Point,  Up: SH-Dependent
  12148.  
  12149. 8.27.4 SH Machine Directives
  12150. ----------------------------
  12151.  
  12152. `uaword'
  12153. `ualong'
  12154.      `as' will issue a warning when a misaligned `.word' or `.long'
  12155.      directive is used.  You may use `.uaword' or `.ualong' to indicate
  12156.      that the value is intentionally misaligned.
  12157.  
  12158. 
  12159. File: as.info,  Node: SH Opcodes,  Prev: SH Directives,  Up: SH-Dependent
  12160.  
  12161. 8.27.5 Opcodes
  12162. --------------
  12163.  
  12164. For detailed information on the SH machine instruction set, see
  12165. `SH-Microcomputer User's Manual' (Renesas) or `SH-4 32-bit CPU Core
  12166. Architecture' (SuperH) and `SuperH (SH) 64-Bit RISC Series' (SuperH).
  12167.  
  12168.    `as' implements all the standard SH opcodes.  No additional
  12169. pseudo-instructions are needed on this family.  Note, however, that
  12170. because `as' supports a simpler form of PC-relative addressing, you may
  12171. simply write (for example)
  12172.  
  12173.      mov.l  bar,r0
  12174.  
  12175. where other assemblers might require an explicit displacement to `bar'
  12176. from the program counter:
  12177.  
  12178.      mov.l  @(DISP, PC)
  12179.  
  12180.    Here is a summary of SH opcodes:
  12181.  
  12182.      Legend:
  12183.      Rn        a numbered register
  12184.      Rm        another numbered register
  12185.      #imm      immediate data
  12186.      disp      displacement
  12187.      disp8     8-bit displacement
  12188.      disp12    12-bit displacement
  12189.  
  12190.      add #imm,Rn                    lds.l @Rn+,PR
  12191.      add Rm,Rn                      mac.w @Rm+,@Rn+
  12192.      addc Rm,Rn                     mov #imm,Rn
  12193.      addv Rm,Rn                     mov Rm,Rn
  12194.      and #imm,R0                    mov.b Rm,@(R0,Rn)
  12195.      and Rm,Rn                      mov.b Rm,@-Rn
  12196.      and.b #imm,@(R0,GBR)           mov.b Rm,@Rn
  12197.      bf disp8                       mov.b @(disp,Rm),R0
  12198.      bra disp12                     mov.b @(disp,GBR),R0
  12199.      bsr disp12                     mov.b @(R0,Rm),Rn
  12200.      bt disp8                       mov.b @Rm+,Rn
  12201.      clrmac                         mov.b @Rm,Rn
  12202.      clrt                           mov.b R0,@(disp,Rm)
  12203.      cmp/eq #imm,R0                 mov.b R0,@(disp,GBR)
  12204.      cmp/eq Rm,Rn                   mov.l Rm,@(disp,Rn)
  12205.      cmp/ge Rm,Rn                   mov.l Rm,@(R0,Rn)
  12206.      cmp/gt Rm,Rn                   mov.l Rm,@-Rn
  12207.      cmp/hi Rm,Rn                   mov.l Rm,@Rn
  12208.      cmp/hs Rm,Rn                   mov.l @(disp,Rn),Rm
  12209.      cmp/pl Rn                      mov.l @(disp,GBR),R0
  12210.      cmp/pz Rn                      mov.l @(disp,PC),Rn
  12211.      cmp/str Rm,Rn                  mov.l @(R0,Rm),Rn
  12212.      div0s Rm,Rn                    mov.l @Rm+,Rn
  12213.      div0u                          mov.l @Rm,Rn
  12214.      div1 Rm,Rn                     mov.l R0,@(disp,GBR)
  12215.      exts.b Rm,Rn                   mov.w Rm,@(R0,Rn)
  12216.      exts.w Rm,Rn                   mov.w Rm,@-Rn
  12217.      extu.b Rm,Rn                   mov.w Rm,@Rn
  12218.      extu.w Rm,Rn                   mov.w @(disp,Rm),R0
  12219.      jmp @Rn                        mov.w @(disp,GBR),R0
  12220.      jsr @Rn                        mov.w @(disp,PC),Rn
  12221.      ldc Rn,GBR                     mov.w @(R0,Rm),Rn
  12222.      ldc Rn,SR                      mov.w @Rm+,Rn
  12223.      ldc Rn,VBR                     mov.w @Rm,Rn
  12224.      ldc.l @Rn+,GBR                 mov.w R0,@(disp,Rm)
  12225.      ldc.l @Rn+,SR                  mov.w R0,@(disp,GBR)
  12226.      ldc.l @Rn+,VBR                 mova @(disp,PC),R0
  12227.      lds Rn,MACH                    movt Rn
  12228.      lds Rn,MACL                    muls Rm,Rn
  12229.      lds Rn,PR                      mulu Rm,Rn
  12230.      lds.l @Rn+,MACH                neg Rm,Rn
  12231.      lds.l @Rn+,MACL                negc Rm,Rn
  12232.  
  12233.      nop                            stc VBR,Rn
  12234.      not Rm,Rn                      stc.l GBR,@-Rn
  12235.      or #imm,R0                     stc.l SR,@-Rn
  12236.      or Rm,Rn                       stc.l VBR,@-Rn
  12237.      or.b #imm,@(R0,GBR)            sts MACH,Rn
  12238.      rotcl Rn                       sts MACL,Rn
  12239.      rotcr Rn                       sts PR,Rn
  12240.      rotl Rn                        sts.l MACH,@-Rn
  12241.      rotr Rn                        sts.l MACL,@-Rn
  12242.      rte                            sts.l PR,@-Rn
  12243.      rts                            sub Rm,Rn
  12244.      sett                           subc Rm,Rn
  12245.      shal Rn                        subv Rm,Rn
  12246.      shar Rn                        swap.b Rm,Rn
  12247.      shll Rn                        swap.w Rm,Rn
  12248.      shll16 Rn                      tas.b @Rn
  12249.      shll2 Rn                       trapa #imm
  12250.      shll8 Rn                       tst #imm,R0
  12251.      shlr Rn                        tst Rm,Rn
  12252.      shlr16 Rn                      tst.b #imm,@(R0,GBR)
  12253.      shlr2 Rn                       xor #imm,R0
  12254.      shlr8 Rn                       xor Rm,Rn
  12255.      sleep                          xor.b #imm,@(R0,GBR)
  12256.      stc GBR,Rn                     xtrct Rm,Rn
  12257.      stc SR,Rn
  12258.  
  12259. 
  12260. File: as.info,  Node: SH64-Dependent,  Next: PDP-11-Dependent,  Prev: SH-Dependent,  Up: Machine Dependencies
  12261.  
  12262. 8.28 SuperH SH64 Dependent Features
  12263. ===================================
  12264.  
  12265. * Menu:
  12266.  
  12267. * SH64 Options::              Options
  12268. * SH64 Syntax::               Syntax
  12269. * SH64 Directives::           SH64 Machine Directives
  12270. * SH64 Opcodes::              Opcodes
  12271.  
  12272. 
  12273. File: as.info,  Node: SH64 Options,  Next: SH64 Syntax,  Up: SH64-Dependent
  12274.  
  12275. 8.28.1 Options
  12276. --------------
  12277.  
  12278. `-isa=sh4 | sh4a'
  12279.      Specify the sh4 or sh4a instruction set.
  12280.  
  12281. `-isa=dsp'
  12282.      Enable sh-dsp insns, and disable sh3e / sh4 insns.
  12283.  
  12284. `-isa=fp'
  12285.      Enable sh2e, sh3e, sh4, and sh4a insn sets.
  12286.  
  12287. `-isa=all'
  12288.      Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
  12289.  
  12290. `-isa=shmedia | -isa=shcompact'
  12291.      Specify the default instruction set.  `SHmedia' specifies the
  12292.      32-bit opcodes, and `SHcompact' specifies the 16-bit opcodes
  12293.      compatible with previous SH families.  The default depends on the
  12294.      ABI selected; the default for the 64-bit ABI is SHmedia, and the
  12295.      default for the 32-bit ABI is SHcompact.  If neither the ABI nor
  12296.      the ISA is specified, the default is 32-bit SHcompact.
  12297.  
  12298.      Note that the `.mode' pseudo-op is not permitted if the ISA is not
  12299.      specified on the command line.
  12300.  
  12301. `-abi=32 | -abi=64'
  12302.      Specify the default ABI.  If the ISA is specified and the ABI is
  12303.      not, the default ABI depends on the ISA, with SHmedia defaulting
  12304.      to 64-bit and SHcompact defaulting to 32-bit.
  12305.  
  12306.      Note that the `.abi' pseudo-op is not permitted if the ABI is not
  12307.      specified on the command line.  When the ABI is specified on the
  12308.      command line, any `.abi' pseudo-ops in the source must match it.
  12309.  
  12310. `-shcompact-const-crange'
  12311.      Emit code-range descriptors for constants in SHcompact code
  12312.      sections.
  12313.  
  12314. `-no-mix'
  12315.      Disallow SHmedia code in the same section as constants and
  12316.      SHcompact code.
  12317.  
  12318. `-no-expand'
  12319.      Do not expand MOVI, PT, PTA or PTB instructions.
  12320.  
  12321. `-expand-pt32'
  12322.      With -abi=64, expand PT, PTA and PTB instructions to 32 bits only.
  12323.  
  12324.  
  12325. 
  12326. File: as.info,  Node: SH64 Syntax,  Next: SH64 Directives,  Prev: SH64 Options,  Up: SH64-Dependent
  12327.  
  12328. 8.28.2 Syntax
  12329. -------------
  12330.  
  12331. * Menu:
  12332.  
  12333. * SH64-Chars::                Special Characters
  12334. * SH64-Regs::                 Register Names
  12335. * SH64-Addressing::           Addressing Modes
  12336.  
  12337. 
  12338. File: as.info,  Node: SH64-Chars,  Next: SH64-Regs,  Up: SH64 Syntax
  12339.  
  12340. 8.28.2.1 Special Characters
  12341. ...........................
  12342.  
  12343. `!' is the line comment character.
  12344.  
  12345.    You can use `;' instead of a newline to separate statements.
  12346.  
  12347.    Since `$' has no special meaning, you may use it in symbol names.
  12348.  
  12349. 
  12350. File: as.info,  Node: SH64-Regs,  Next: SH64-Addressing,  Prev: SH64-Chars,  Up: SH64 Syntax
  12351.  
  12352. 8.28.2.2 Register Names
  12353. .......................
  12354.  
  12355. You can use the predefined symbols `r0' through `r63' to refer to the
  12356. SH64 general registers, `cr0' through `cr63' for control registers,
  12357. `tr0' through `tr7' for target address registers, `fr0' through `fr63'
  12358. for single-precision floating point registers, `dr0' through `dr62'
  12359. (even numbered registers only) for double-precision floating point
  12360. registers, `fv0' through `fv60' (multiples of four only) for
  12361. single-precision floating point vectors, `fp0' through `fp62' (even
  12362. numbered registers only) for single-precision floating point pairs,
  12363. `mtrx0' through `mtrx48' (multiples of 16 only) for 4x4 matrices of
  12364. single-precision floating point registers, `pc' for the program
  12365. counter, and `fpscr' for the floating point status and control register.
  12366.  
  12367.    You can also refer to the control registers by the mnemonics `sr',
  12368. `ssr', `pssr', `intevt', `expevt', `pexpevt', `tra', `spc', `pspc',
  12369. `resvec', `vbr', `tea', `dcr', `kcr0', `kcr1', `ctc', and `usr'.
  12370.  
  12371. 
  12372. File: as.info,  Node: SH64-Addressing,  Prev: SH64-Regs,  Up: SH64 Syntax
  12373.  
  12374. 8.28.2.3 Addressing Modes
  12375. .........................
  12376.  
  12377. SH64 operands consist of either a register or immediate value.  The
  12378. immediate value can be a constant or label reference (or portion of a
  12379. label reference), as in this example:
  12380.  
  12381.          movi    4,r2
  12382.          pt    function, tr4
  12383.          movi    (function >> 16) & 65535,r0
  12384.          shori    function & 65535, r0
  12385.          ld.l    r0,4,r0
  12386.  
  12387.    Instruction label references can reference labels in either SHmedia
  12388. or SHcompact.  To differentiate between the two, labels in SHmedia
  12389. sections will always have the least significant bit set (i.e. they will
  12390. be odd), which SHcompact labels will have the least significant bit
  12391. reset (i.e. they will be even).  If you need to reference the actual
  12392. address of a label, you can use the `datalabel' modifier, as in this
  12393. example:
  12394.  
  12395.          .long    function
  12396.          .long    datalabel function
  12397.  
  12398.    In that example, the first longword may or may not have the least
  12399. significant bit set depending on whether the label is an SHmedia label
  12400. or an SHcompact label.  The second longword will be the actual address
  12401. of the label, regardless of what type of label it is.
  12402.  
  12403. 
  12404. File: as.info,  Node: SH64 Directives,  Next: SH64 Opcodes,  Prev: SH64 Syntax,  Up: SH64-Dependent
  12405.  
  12406. 8.28.3 SH64 Machine Directives
  12407. ------------------------------
  12408.  
  12409. In addition to the SH directives, the SH64 provides the following
  12410. directives:
  12411.  
  12412. `.mode [shmedia|shcompact]'
  12413. `.isa [shmedia|shcompact]'
  12414.      Specify the ISA for the following instructions (the two directives
  12415.      are equivalent).  Note that programs such as `objdump' rely on
  12416.      symbolic labels to determine when such mode switches occur (by
  12417.      checking the least significant bit of the label's address), so
  12418.      such mode/isa changes should always be followed by a label (in
  12419.      practice, this is true anyway).  Note that you cannot use these
  12420.      directives if you didn't specify an ISA on the command line.
  12421.  
  12422. `.abi [32|64]'
  12423.      Specify the ABI for the following instructions.  Note that you
  12424.      cannot use this directive unless you specified an ABI on the
  12425.      command line, and the ABIs specified must match.
  12426.  
  12427. `.uaquad'
  12428.      Like .uaword and .ualong, this allows you to specify an
  12429.      intentionally unaligned quadword (64 bit word).
  12430.  
  12431.  
  12432. 
  12433. File: as.info,  Node: SH64 Opcodes,  Prev: SH64 Directives,  Up: SH64-Dependent
  12434.  
  12435. 8.28.4 Opcodes
  12436. --------------
  12437.  
  12438. For detailed information on the SH64 machine instruction set, see
  12439. `SuperH 64 bit RISC Series Architecture Manual' (SuperH, Inc.).
  12440.  
  12441.    `as' implements all the standard SH64 opcodes.  In addition, the
  12442. following pseudo-opcodes may be expanded into one or more alternate
  12443. opcodes:
  12444.  
  12445. `movi'
  12446.      If the value doesn't fit into a standard `movi' opcode, `as' will
  12447.      replace the `movi' with a sequence of `movi' and `shori' opcodes.
  12448.  
  12449. `pt'
  12450.      This expands to a sequence of `movi' and `shori' opcode, followed
  12451.      by a `ptrel' opcode, or to a `pta' or `ptb' opcode, depending on
  12452.      the label referenced.
  12453.  
  12454.  
  12455. 
  12456. File: as.info,  Node: Sparc-Dependent,  Next: TIC54X-Dependent,  Prev: PPC-Dependent,  Up: Machine Dependencies
  12457.  
  12458. 8.29 SPARC Dependent Features
  12459. =============================
  12460.  
  12461. * Menu:
  12462.  
  12463. * Sparc-Opts::                  Options
  12464. * Sparc-Aligned-Data::        Option to enforce aligned data
  12465. * Sparc-Float::                 Floating Point
  12466. * Sparc-Directives::            Sparc Machine Directives
  12467.  
  12468. 
  12469. File: as.info,  Node: Sparc-Opts,  Next: Sparc-Aligned-Data,  Up: Sparc-Dependent
  12470.  
  12471. 8.29.1 Options
  12472. --------------
  12473.  
  12474. The SPARC chip family includes several successive levels, using the same
  12475. core instruction set, but including a few additional instructions at
  12476. each level.  There are exceptions to this however.  For details on what
  12477. instructions each variant supports, please see the chip's architecture
  12478. reference manual.
  12479.  
  12480.    By default, `as' assumes the core instruction set (SPARC v6), but
  12481. "bumps" the architecture level as needed: it switches to successively
  12482. higher architectures as it encounters instructions that only exist in
  12483. the higher levels.
  12484.  
  12485.    If not configured for SPARC v9 (`sparc64-*-*') GAS will not bump
  12486. passed sparclite by default, an option must be passed to enable the v9
  12487. instructions.
  12488.  
  12489.    GAS treats sparclite as being compatible with v8, unless an
  12490. architecture is explicitly requested.  SPARC v9 is always incompatible
  12491. with sparclite.
  12492.  
  12493. `-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite'
  12494. `-Av8plus | -Av8plusa | -Av9 | -Av9a'
  12495.      Use one of the `-A' options to select one of the SPARC
  12496.      architectures explicitly.  If you select an architecture
  12497.      explicitly, `as' reports a fatal error if it encounters an
  12498.      instruction or feature requiring an incompatible or higher level.
  12499.  
  12500.      `-Av8plus' and `-Av8plusa' select a 32 bit environment.
  12501.  
  12502.      `-Av9' and `-Av9a' select a 64 bit environment and are not
  12503.      available unless GAS is explicitly configured with 64 bit
  12504.      environment support.
  12505.  
  12506.      `-Av8plusa' and `-Av9a' enable the SPARC V9 instruction set with
  12507.      UltraSPARC extensions.
  12508.  
  12509. `-xarch=v8plus | -xarch=v8plusa'
  12510.      For compatibility with the Solaris v9 assembler.  These options are
  12511.      equivalent to -Av8plus and -Av8plusa, respectively.
  12512.  
  12513. `-bump'
  12514.      Warn whenever it is necessary to switch to another level.  If an
  12515.      architecture level is explicitly requested, GAS will not issue
  12516.      warnings until that level is reached, and will then bump the level
  12517.      as required (except between incompatible levels).
  12518.  
  12519. `-32 | -64'
  12520.      Select the word size, either 32 bits or 64 bits.  These options
  12521.      are only available with the ELF object file format, and require
  12522.      that the necessary BFD support has been included.
  12523.  
  12524. 
  12525. File: as.info,  Node: Sparc-Aligned-Data,  Next: Sparc-Float,  Prev: Sparc-Opts,  Up: Sparc-Dependent
  12526.  
  12527. 8.29.2 Enforcing aligned data
  12528. -----------------------------
  12529.  
  12530. SPARC GAS normally permits data to be misaligned.  For example, it
  12531. permits the `.long' pseudo-op to be used on a byte boundary.  However,
  12532. the native SunOS and Solaris assemblers issue an error when they see
  12533. misaligned data.
  12534.  
  12535.    You can use the `--enforce-aligned-data' option to make SPARC GAS
  12536. also issue an error about misaligned data, just as the SunOS and Solaris
  12537. assemblers do.
  12538.  
  12539.    The `--enforce-aligned-data' option is not the default because gcc
  12540. issues misaligned data pseudo-ops when it initializes certain packed
  12541. data structures (structures defined using the `packed' attribute).  You
  12542. may have to assemble with GAS in order to initialize packed data
  12543. structures in your own code.
  12544.  
  12545. 
  12546. File: as.info,  Node: Sparc-Float,  Next: Sparc-Directives,  Prev: Sparc-Aligned-Data,  Up: Sparc-Dependent
  12547.  
  12548. 8.29.3 Floating Point
  12549. ---------------------
  12550.  
  12551. The Sparc uses IEEE floating-point numbers.
  12552.  
  12553. 
  12554. File: as.info,  Node: Sparc-Directives,  Prev: Sparc-Float,  Up: Sparc-Dependent
  12555.  
  12556. 8.29.4 Sparc Machine Directives
  12557. -------------------------------
  12558.  
  12559. The Sparc version of `as' supports the following additional machine
  12560. directives:
  12561.  
  12562. `.align'
  12563.      This must be followed by the desired alignment in bytes.
  12564.  
  12565. `.common'
  12566.      This must be followed by a symbol name, a positive number, and
  12567.      `"bss"'.  This behaves somewhat like `.comm', but the syntax is
  12568.      different.
  12569.  
  12570. `.half'
  12571.      This is functionally identical to `.short'.
  12572.  
  12573. `.nword'
  12574.      On the Sparc, the `.nword' directive produces native word sized
  12575.      value, ie. if assembling with -32 it is equivalent to `.word', if
  12576.      assembling with -64 it is equivalent to `.xword'.
  12577.  
  12578. `.proc'
  12579.      This directive is ignored.  Any text following it on the same line
  12580.      is also ignored.
  12581.  
  12582. `.register'
  12583.      This directive declares use of a global application or system
  12584.      register.  It must be followed by a register name %g2, %g3, %g6 or
  12585.      %g7, comma and the symbol name for that register.  If symbol name
  12586.      is `#scratch', it is a scratch register, if it is `#ignore', it
  12587.      just suppresses any errors about using undeclared global register,
  12588.      but does not emit any information about it into the object file.
  12589.      This can be useful e.g. if you save the register before use and
  12590.      restore it after.
  12591.  
  12592. `.reserve'
  12593.      This must be followed by a symbol name, a positive number, and
  12594.      `"bss"'.  This behaves somewhat like `.lcomm', but the syntax is
  12595.      different.
  12596.  
  12597. `.seg'
  12598.      This must be followed by `"text"', `"data"', or `"data1"'.  It
  12599.      behaves like `.text', `.data', or `.data 1'.
  12600.  
  12601. `.skip'
  12602.      This is functionally identical to the `.space' directive.
  12603.  
  12604. `.word'
  12605.      On the Sparc, the `.word' directive produces 32 bit values,
  12606.      instead of the 16 bit values it produces on many other machines.
  12607.  
  12608. `.xword'
  12609.      On the Sparc V9 processor, the `.xword' directive produces 64 bit
  12610.      values.
  12611.  
  12612. 
  12613. File: as.info,  Node: TIC54X-Dependent,  Next: V850-Dependent,  Prev: Sparc-Dependent,  Up: Machine Dependencies
  12614.  
  12615. 8.30 TIC54X Dependent Features
  12616. ==============================
  12617.  
  12618. * Menu:
  12619.  
  12620. * TIC54X-Opts::              Command-line Options
  12621. * TIC54X-Block::             Blocking
  12622. * TIC54X-Env::               Environment Settings
  12623. * TIC54X-Constants::         Constants Syntax
  12624. * TIC54X-Subsyms::           String Substitution
  12625. * TIC54X-Locals::            Local Label Syntax
  12626. * TIC54X-Builtins::          Builtin Assembler Math Functions
  12627. * TIC54X-Ext::               Extended Addressing Support
  12628. * TIC54X-Directives::        Directives
  12629. * TIC54X-Macros::            Macro Features
  12630. * TIC54X-MMRegs::            Memory-mapped Registers
  12631.  
  12632. 
  12633. File: as.info,  Node: TIC54X-Opts,  Next: TIC54X-Block,  Up: TIC54X-Dependent
  12634.  
  12635. 8.30.1 Options
  12636. --------------
  12637.  
  12638. The TMS320C54x version of `as' has a few machine-dependent options.
  12639.  
  12640.    You can use the `-mfar-mode' option to enable extended addressing
  12641. mode.  All addresses will be assumed to be > 16 bits, and the
  12642. appropriate relocation types will be used.  This option is equivalent
  12643. to using the `.far_mode' directive in the assembly code.  If you do not
  12644. use the `-mfar-mode' option, all references will be assumed to be 16
  12645. bits.  This option may be abbreviated to `-mf'.
  12646.  
  12647.    You can use the `-mcpu' option to specify a particular CPU.  This
  12648. option is equivalent to using the `.version' directive in the assembly
  12649. code.  For recognized CPU codes, see *Note `.version':
  12650. TIC54X-Directives.  The default CPU version is `542'.
  12651.  
  12652.    You can use the `-merrors-to-file' option to redirect error output
  12653. to a file (this provided for those deficient environments which don't
  12654. provide adequate output redirection).  This option may be abbreviated to
  12655. `-me'.
  12656.  
  12657. 
  12658. File: as.info,  Node: TIC54X-Block,  Next: TIC54X-Env,  Prev: TIC54X-Opts,  Up: TIC54X-Dependent
  12659.  
  12660. 8.30.2 Blocking
  12661. ---------------
  12662.  
  12663. A blocked section or memory block is guaranteed not to cross the
  12664. blocking boundary (usually a page, or 128 words) if it is smaller than
  12665. the blocking size, or to start on a page boundary if it is larger than
  12666. the blocking size.
  12667.  
  12668. 
  12669. File: as.info,  Node: TIC54X-Env,  Next: TIC54X-Constants,  Prev: TIC54X-Block,  Up: TIC54X-Dependent
  12670.  
  12671. 8.30.3 Environment Settings
  12672. ---------------------------
  12673.  
  12674. `C54XDSP_DIR' and `A_DIR' are semicolon-separated paths which are added
  12675. to the list of directories normally searched for source and include
  12676. files.  `C54XDSP_DIR' will override `A_DIR'.
  12677.  
  12678. 
  12679. File: as.info,  Node: TIC54X-Constants,  Next: TIC54X-Subsyms,  Prev: TIC54X-Env,  Up: TIC54X-Dependent
  12680.  
  12681. 8.30.4 Constants Syntax
  12682. -----------------------
  12683.  
  12684. The TIC54X version of `as' allows the following additional constant
  12685. formats, using a suffix to indicate the radix:
  12686.  
  12687.      Binary                  `000000B, 011000b'
  12688.      Octal                   `10Q, 224q'
  12689.      Hexadecimal             `45h, 0FH'
  12690.  
  12691. 
  12692. File: as.info,  Node: TIC54X-Subsyms,  Next: TIC54X-Locals,  Prev: TIC54X-Constants,  Up: TIC54X-Dependent
  12693.  
  12694. 8.30.5 String Substitution
  12695. --------------------------
  12696.  
  12697. A subset of allowable symbols (which we'll call subsyms) may be assigned
  12698. arbitrary string values.  This is roughly equivalent to C preprocessor
  12699. #define macros.  When `as' encounters one of these symbols, the symbol
  12700. is replaced in the input stream by its string value.  Subsym names
  12701. *must* begin with a letter.
  12702.  
  12703.    Subsyms may be defined using the `.asg' and `.eval' directives
  12704. (*Note `.asg': TIC54X-Directives, *Note `.eval': TIC54X-Directives.
  12705.  
  12706.    Expansion is recursive until a previously encountered symbol is
  12707. seen, at which point substitution stops.
  12708.  
  12709.    In this example, x is replaced with SYM2; SYM2 is replaced with
  12710. SYM1, and SYM1 is replaced with x.  At this point, x has already been
  12711. encountered and the substitution stops.
  12712.  
  12713.       .asg   "x",SYM1
  12714.       .asg   "SYM1",SYM2
  12715.       .asg   "SYM2",x
  12716.       add    x,a             ; final code assembled is "add  x, a"
  12717.  
  12718.    Macro parameters are converted to subsyms; a side effect of this is
  12719. the normal `as' '\ARG' dereferencing syntax is unnecessary.  Subsyms
  12720. defined within a macro will have global scope, unless the `.var'
  12721. directive is used to identify the subsym as a local macro variable
  12722. *note `.var': TIC54X-Directives.
  12723.  
  12724.    Substitution may be forced in situations where replacement might be
  12725. ambiguous by placing colons on either side of the subsym.  The following
  12726. code:
  12727.  
  12728.       .eval  "10",x
  12729.      LAB:X:  add     #x, a
  12730.  
  12731.    When assembled becomes:
  12732.  
  12733.      LAB10  add     #10, a
  12734.  
  12735.    Smaller parts of the string assigned to a subsym may be accessed with
  12736. the following syntax:
  12737.  
  12738. ``:SYMBOL(CHAR_INDEX):''
  12739.      Evaluates to a single-character string, the character at
  12740.      CHAR_INDEX.
  12741.  
  12742. ``:SYMBOL(START,LENGTH):''
  12743.      Evaluates to a substring of SYMBOL beginning at START with length
  12744.      LENGTH.
  12745.  
  12746. 
  12747. File: as.info,  Node: TIC54X-Locals,  Next: TIC54X-Builtins,  Prev: TIC54X-Subsyms,  Up: TIC54X-Dependent
  12748.  
  12749. 8.30.6 Local Labels
  12750. -------------------
  12751.  
  12752. Local labels may be defined in two ways:
  12753.  
  12754.    * $N, where N is a decimal number between 0 and 9
  12755.  
  12756.    * LABEL?, where LABEL is any legal symbol name.
  12757.  
  12758.    Local labels thus defined may be redefined or automatically
  12759. generated.  The scope of a local label is based on when it may be
  12760. undefined or reset.  This happens when one of the following situations
  12761. is encountered:
  12762.  
  12763.    * .newblock directive *note `.newblock': TIC54X-Directives.
  12764.  
  12765.    * The current section is changed (.sect, .text, or .data)
  12766.  
  12767.    * Entering or leaving an included file
  12768.  
  12769.    * The macro scope where the label was defined is exited
  12770.  
  12771. 
  12772. File: as.info,  Node: TIC54X-Builtins,  Next: TIC54X-Ext,  Prev: TIC54X-Locals,  Up: TIC54X-Dependent
  12773.  
  12774. 8.30.7 Math Builtins
  12775. --------------------
  12776.  
  12777. The following built-in functions may be used to generate a
  12778. floating-point value.  All return a floating-point value except `$cvi',
  12779. `$int', and `$sgn', which return an integer value.
  12780.  
  12781. ``$acos(EXPR)''
  12782.      Returns the floating point arccosine of EXPR.
  12783.  
  12784. ``$asin(EXPR)''
  12785.      Returns the floating point arcsine of EXPR.
  12786.  
  12787. ``$atan(EXPR)''
  12788.      Returns the floating point arctangent of EXPR.
  12789.  
  12790. ``$atan2(EXPR1,EXPR2)''
  12791.      Returns the floating point arctangent of EXPR1 / EXPR2.
  12792.  
  12793. ``$ceil(EXPR)''
  12794.      Returns the smallest integer not less than EXPR as floating point.
  12795.  
  12796. ``$cosh(EXPR)''
  12797.      Returns the floating point hyperbolic cosine of EXPR.
  12798.  
  12799. ``$cos(EXPR)''
  12800.      Returns the floating point cosine of EXPR.
  12801.  
  12802. ``$cvf(EXPR)''
  12803.      Returns the integer value EXPR converted to floating-point.
  12804.  
  12805. ``$cvi(EXPR)''
  12806.      Returns the floating point value EXPR converted to integer.
  12807.  
  12808. ``$exp(EXPR)''
  12809.      Returns the floating point value e ^ EXPR.
  12810.  
  12811. ``$fabs(EXPR)''
  12812.      Returns the floating point absolute value of EXPR.
  12813.  
  12814. ``$floor(EXPR)''
  12815.      Returns the largest integer that is not greater than EXPR as
  12816.      floating point.
  12817.  
  12818. ``$fmod(EXPR1,EXPR2)''
  12819.      Returns the floating point remainder of EXPR1 / EXPR2.
  12820.  
  12821. ``$int(EXPR)''
  12822.      Returns 1 if EXPR evaluates to an integer, zero otherwise.
  12823.  
  12824. ``$ldexp(EXPR1,EXPR2)''
  12825.      Returns the floating point value EXPR1 * 2 ^ EXPR2.
  12826.  
  12827. ``$log10(EXPR)''
  12828.      Returns the base 10 logarithm of EXPR.
  12829.  
  12830. ``$log(EXPR)''
  12831.      Returns the natural logarithm of EXPR.
  12832.  
  12833. ``$max(EXPR1,EXPR2)''
  12834.      Returns the floating point maximum of EXPR1 and EXPR2.
  12835.  
  12836. ``$min(EXPR1,EXPR2)''
  12837.      Returns the floating point minimum of EXPR1 and EXPR2.
  12838.  
  12839. ``$pow(EXPR1,EXPR2)''
  12840.      Returns the floating point value EXPR1 ^ EXPR2.
  12841.  
  12842. ``$round(EXPR)''
  12843.      Returns the nearest integer to EXPR as a floating point number.
  12844.  
  12845. ``$sgn(EXPR)''
  12846.      Returns -1, 0, or 1 based on the sign of EXPR.
  12847.  
  12848. ``$sin(EXPR)''
  12849.      Returns the floating point sine of EXPR.
  12850.  
  12851. ``$sinh(EXPR)''
  12852.      Returns the floating point hyperbolic sine of EXPR.
  12853.  
  12854. ``$sqrt(EXPR)''
  12855.      Returns the floating point square root of EXPR.
  12856.  
  12857. ``$tan(EXPR)''
  12858.      Returns the floating point tangent of EXPR.
  12859.  
  12860. ``$tanh(EXPR)''
  12861.      Returns the floating point hyperbolic tangent of EXPR.
  12862.  
  12863. ``$trunc(EXPR)''
  12864.      Returns the integer value of EXPR truncated towards zero as
  12865.      floating point.
  12866.  
  12867.  
  12868. 
  12869. File: as.info,  Node: TIC54X-Ext,  Next: TIC54X-Directives,  Prev: TIC54X-Builtins,  Up: TIC54X-Dependent
  12870.  
  12871. 8.30.8 Extended Addressing
  12872. --------------------------
  12873.  
  12874. The `LDX' pseudo-op is provided for loading the extended addressing bits
  12875. of a label or address.  For example, if an address `_label' resides in
  12876. extended program memory, the value of `_label' may be loaded as follows:
  12877.       ldx     #_label,16,a    ; loads extended bits of _label
  12878.       or      #_label,a       ; loads lower 16 bits of _label
  12879.       bacc    a               ; full address is in accumulator A
  12880.  
  12881. 
  12882. File: as.info,  Node: TIC54X-Directives,  Next: TIC54X-Macros,  Prev: TIC54X-Ext,  Up: TIC54X-Dependent
  12883.  
  12884. 8.30.9 Directives
  12885. -----------------
  12886.  
  12887. `.align [SIZE]'
  12888. `.even'
  12889.      Align the section program counter on the next boundary, based on
  12890.      SIZE.  SIZE may be any power of 2.  `.even' is equivalent to
  12891.      `.align' with a SIZE of 2.
  12892.     `1'
  12893.           Align SPC to word boundary
  12894.  
  12895.     `2'
  12896.           Align SPC to longword boundary (same as .even)
  12897.  
  12898.     `128'
  12899.           Align SPC to page boundary
  12900.  
  12901. `.asg STRING, NAME'
  12902.      Assign NAME the string STRING.  String replacement is performed on
  12903.      STRING before assignment.
  12904.  
  12905. `.eval STRING, NAME'
  12906.      Evaluate the contents of string STRING and assign the result as a
  12907.      string to the subsym NAME.  String replacement is performed on
  12908.      STRING before assignment.
  12909.  
  12910. `.bss SYMBOL, SIZE [, [BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
  12911.      Reserve space for SYMBOL in the .bss section.  SIZE is in words.
  12912.      If present, BLOCKING_FLAG indicates the allocated space should be
  12913.      aligned on a page boundary if it would otherwise cross a page
  12914.      boundary.  If present, ALIGNMENT_FLAG causes the assembler to
  12915.      allocate SIZE on a long word boundary.
  12916.  
  12917. `.byte VALUE [,...,VALUE_N]'
  12918. `.ubyte VALUE [,...,VALUE_N]'
  12919. `.char VALUE [,...,VALUE_N]'
  12920. `.uchar VALUE [,...,VALUE_N]'
  12921.      Place one or more bytes into consecutive words of the current
  12922.      section.  The upper 8 bits of each word is zero-filled.  If a
  12923.      label is used, it points to the word allocated for the first byte
  12924.      encountered.
  12925.  
  12926. `.clink ["SECTION_NAME"]'
  12927.      Set STYP_CLINK flag for this section, which indicates to the
  12928.      linker that if no symbols from this section are referenced, the
  12929.      section should not be included in the link.  If SECTION_NAME is
  12930.      omitted, the current section is used.
  12931.  
  12932. `.c_mode'
  12933.      TBD.
  12934.  
  12935. `.copy "FILENAME" | FILENAME'
  12936. `.include "FILENAME" | FILENAME'
  12937.      Read source statements from FILENAME.  The normal include search
  12938.      path is used.  Normally .copy will cause statements from the
  12939.      included file to be printed in the assembly listing and .include
  12940.      will not, but this distinction is not currently implemented.
  12941.  
  12942. `.data'
  12943.      Begin assembling code into the .data section.
  12944.  
  12945. `.double VALUE [,...,VALUE_N]'
  12946. `.ldouble VALUE [,...,VALUE_N]'
  12947. `.float VALUE [,...,VALUE_N]'
  12948. `.xfloat VALUE [,...,VALUE_N]'
  12949.      Place an IEEE single-precision floating-point representation of
  12950.      one or more floating-point values into the current section.  All
  12951.      but `.xfloat' align the result on a longword boundary.  Values are
  12952.      stored most-significant word first.
  12953.  
  12954. `.drlist'
  12955. `.drnolist'
  12956.      Control printing of directives to the listing file.  Ignored.
  12957.  
  12958. `.emsg STRING'
  12959. `.mmsg STRING'
  12960. `.wmsg STRING'
  12961.      Emit a user-defined error, message, or warning, respectively.
  12962.  
  12963. `.far_mode'
  12964.      Use extended addressing when assembling statements.  This should
  12965.      appear only once per file, and is equivalent to the -mfar-mode
  12966.      option *note `-mfar-mode': TIC54X-Opts.
  12967.  
  12968. `.fclist'
  12969. `.fcnolist'
  12970.      Control printing of false conditional blocks to the listing file.
  12971.  
  12972. `.field VALUE [,SIZE]'
  12973.      Initialize a bitfield of SIZE bits in the current section.  If
  12974.      VALUE is relocatable, then SIZE must be 16.  SIZE defaults to 16
  12975.      bits.  If VALUE does not fit into SIZE bits, the value will be
  12976.      truncated.  Successive `.field' directives will pack starting at
  12977.      the current word, filling the most significant bits first, and
  12978.      aligning to the start of the next word if the field size does not
  12979.      fit into the space remaining in the current word.  A `.align'
  12980.      directive with an operand of 1 will force the next `.field'
  12981.      directive to begin packing into a new word.  If a label is used, it
  12982.      points to the word that contains the specified field.
  12983.  
  12984. `.global SYMBOL [,...,SYMBOL_N]'
  12985. `.def SYMBOL [,...,SYMBOL_N]'
  12986. `.ref SYMBOL [,...,SYMBOL_N]'
  12987.      `.def' nominally identifies a symbol defined in the current file
  12988.      and availalbe to other files.  `.ref' identifies a symbol used in
  12989.      the current file but defined elsewhere.  Both map to the standard
  12990.      `.global' directive.
  12991.  
  12992. `.half VALUE [,...,VALUE_N]'
  12993. `.uhalf VALUE [,...,VALUE_N]'
  12994. `.short VALUE [,...,VALUE_N]'
  12995. `.ushort VALUE [,...,VALUE_N]'
  12996. `.int VALUE [,...,VALUE_N]'
  12997. `.uint VALUE [,...,VALUE_N]'
  12998. `.word VALUE [,...,VALUE_N]'
  12999. `.uword VALUE [,...,VALUE_N]'
  13000.      Place one or more values into consecutive words of the current
  13001.      section.  If a label is used, it points to the word allocated for
  13002.      the first value encountered.
  13003.  
  13004. `.label SYMBOL'
  13005.      Define a special SYMBOL to refer to the load time address of the
  13006.      current section program counter.
  13007.  
  13008. `.length'
  13009. `.width'
  13010.      Set the page length and width of the output listing file.  Ignored.
  13011.  
  13012. `.list'
  13013. `.nolist'
  13014.      Control whether the source listing is printed.  Ignored.
  13015.  
  13016. `.long VALUE [,...,VALUE_N]'
  13017. `.ulong VALUE [,...,VALUE_N]'
  13018. `.xlong VALUE [,...,VALUE_N]'
  13019.      Place one or more 32-bit values into consecutive words in the
  13020.      current section.  The most significant word is stored first.
  13021.      `.long' and `.ulong' align the result on a longword boundary;
  13022.      `xlong' does not.
  13023.  
  13024. `.loop [COUNT]'
  13025. `.break [CONDITION]'
  13026. `.endloop'
  13027.      Repeatedly assemble a block of code.  `.loop' begins the block, and
  13028.      `.endloop' marks its termination.  COUNT defaults to 1024, and
  13029.      indicates the number of times the block should be repeated.
  13030.      `.break' terminates the loop so that assembly begins after the
  13031.      `.endloop' directive.  The optional CONDITION will cause the loop
  13032.      to terminate only if it evaluates to zero.
  13033.  
  13034. `MACRO_NAME .macro [PARAM1][,...PARAM_N]'
  13035. `[.mexit]'
  13036. `.endm'
  13037.      See the section on macros for more explanation (*Note
  13038.      TIC54X-Macros::.
  13039.  
  13040. `.mlib "FILENAME" | FILENAME'
  13041.      Load the macro library FILENAME.  FILENAME must be an archived
  13042.      library (BFD ar-compatible) of text files, expected to contain
  13043.      only macro definitions.   The standard include search path is used.
  13044.  
  13045. `.mlist'
  13046.  
  13047. `.mnolist'
  13048.      Control whether to include macro and loop block expansions in the
  13049.      listing output.  Ignored.
  13050.  
  13051. `.mmregs'
  13052.      Define global symbolic names for the 'c54x registers.  Supposedly
  13053.      equivalent to executing `.set' directives for each register with
  13054.      its memory-mapped value, but in reality is provided only for
  13055.      compatibility and does nothing.
  13056.  
  13057. `.newblock'
  13058.      This directive resets any TIC54X local labels currently defined.
  13059.      Normal `as' local labels are unaffected.
  13060.  
  13061. `.option OPTION_LIST'
  13062.      Set listing options.  Ignored.
  13063.  
  13064. `.sblock "SECTION_NAME" | SECTION_NAME [,"NAME_N" | NAME_N]'
  13065.      Designate SECTION_NAME for blocking.  Blocking guarantees that a
  13066.      section will start on a page boundary (128 words) if it would
  13067.      otherwise cross a page boundary.  Only initialized sections may be
  13068.      designated with this directive.  See also *Note TIC54X-Block::.
  13069.  
  13070. `.sect "SECTION_NAME"'
  13071.      Define a named initialized section and make it the current section.
  13072.  
  13073. `SYMBOL .set "VALUE"'
  13074. `SYMBOL .equ "VALUE"'
  13075.      Equate a constant VALUE to a SYMBOL, which is placed in the symbol
  13076.      table.  SYMBOL may not be previously defined.
  13077.  
  13078. `.space SIZE_IN_BITS'
  13079. `.bes SIZE_IN_BITS'
  13080.      Reserve the given number of bits in the current section and
  13081.      zero-fill them.  If a label is used with `.space', it points to the
  13082.      *first* word reserved.  With `.bes', the label points to the
  13083.      *last* word reserved.
  13084.  
  13085. `.sslist'
  13086. `.ssnolist'
  13087.      Controls the inclusion of subsym replacement in the listing
  13088.      output.  Ignored.
  13089.  
  13090. `.string "STRING" [,...,"STRING_N"]'
  13091. `.pstring "STRING" [,...,"STRING_N"]'
  13092.      Place 8-bit characters from STRING into the current section.
  13093.      `.string' zero-fills the upper 8 bits of each word, while
  13094.      `.pstring' puts two characters into each word, filling the
  13095.      most-significant bits first.  Unused space is zero-filled.  If a
  13096.      label is used, it points to the first word initialized.
  13097.  
  13098. `[STAG] .struct [OFFSET]'
  13099. `[NAME_1] element [COUNT_1]'
  13100. `[NAME_2] element [COUNT_2]'
  13101. `[TNAME] .tag STAGX [TCOUNT]'
  13102. `...'
  13103. `[NAME_N] element [COUNT_N]'
  13104. `[SSIZE] .endstruct'
  13105. `LABEL .tag [STAG]'
  13106.      Assign symbolic offsets to the elements of a structure.  STAG
  13107.      defines a symbol to use to reference the structure.  OFFSET
  13108.      indicates a starting value to use for the first element
  13109.      encountered; otherwise it defaults to zero.  Each element can have
  13110.      a named offset, NAME, which is a symbol assigned the value of the
  13111.      element's offset into the structure.  If STAG is missing, these
  13112.      become global symbols.  COUNT adjusts the offset that many times,
  13113.      as if `element' were an array.  `element' may be one of `.byte',
  13114.      `.word', `.long', `.float', or any equivalent of those, and the
  13115.      structure offset is adjusted accordingly.  `.field' and `.string'
  13116.      are also allowed; the size of `.field' is one bit, and `.string'
  13117.      is considered to be one word in size.  Only element descriptors,
  13118.      structure/union tags, `.align' and conditional assembly directives
  13119.      are allowed within `.struct'/`.endstruct'.  `.align' aligns member
  13120.      offsets to word boundaries only.  SSIZE, if provided, will always
  13121.      be assigned the size of the structure.
  13122.  
  13123.      The `.tag' directive, in addition to being used to define a
  13124.      structure/union element within a structure, may be used to apply a
  13125.      structure to a symbol.  Once applied to LABEL, the individual
  13126.      structure elements may be applied to LABEL to produce the desired
  13127.      offsets using LABEL as the structure base.
  13128.  
  13129. `.tab'
  13130.      Set the tab size in the output listing.  Ignored.
  13131.  
  13132. `[UTAG] .union'
  13133. `[NAME_1] element [COUNT_1]'
  13134. `[NAME_2] element [COUNT_2]'
  13135. `[TNAME] .tag UTAGX[,TCOUNT]'
  13136. `...'
  13137. `[NAME_N] element [COUNT_N]'
  13138. `[USIZE] .endstruct'
  13139. `LABEL .tag [UTAG]'
  13140.      Similar to `.struct', but the offset after each element is reset to
  13141.      zero, and the USIZE is set to the maximum of all defined elements.
  13142.      Starting offset for the union is always zero.
  13143.  
  13144. `[SYMBOL] .usect "SECTION_NAME", SIZE, [,[BLOCKING_FLAG] [,ALIGNMENT_FLAG]]'
  13145.      Reserve space for variables in a named, uninitialized section
  13146.      (similar to .bss).  `.usect' allows definitions sections
  13147.      independent of .bss.  SYMBOL points to the first location reserved
  13148.      by this allocation.  The symbol may be used as a variable name.
  13149.      SIZE is the allocated size in words.  BLOCKING_FLAG indicates
  13150.      whether to block this section on a page boundary (128 words)
  13151.      (*note TIC54X-Block::).  ALIGNMENT FLAG indicates whether the
  13152.      section should be longword-aligned.
  13153.  
  13154. `.var SYM[,..., SYM_N]'
  13155.      Define a subsym to be a local variable within a macro.  See *Note
  13156.      TIC54X-Macros::.
  13157.  
  13158. `.version VERSION'
  13159.      Set which processor to build instructions for.  Though the
  13160.      following values are accepted, the op is ignored.
  13161.     `541'
  13162.     `542'
  13163.     `543'
  13164.     `545'
  13165.     `545LP'
  13166.     `546LP'
  13167.     `548'
  13168.     `549'
  13169.  
  13170. 
  13171. File: as.info,  Node: TIC54X-Macros,  Next: TIC54X-MMRegs,  Prev: TIC54X-Directives,  Up: TIC54X-Dependent
  13172.  
  13173. 8.30.10 Macros
  13174. --------------
  13175.  
  13176. Macros do not require explicit dereferencing of arguments (i.e. \ARG).
  13177.  
  13178.    During macro expansion, the macro parameters are converted to
  13179. subsyms.  If the number of arguments passed the macro invocation
  13180. exceeds the number of parameters defined, the last parameter is
  13181. assigned the string equivalent of all remaining arguments.  If fewer
  13182. arguments are given than parameters, the missing parameters are
  13183. assigned empty strings.  To include a comma in an argument, you must
  13184. enclose the argument in quotes.
  13185.  
  13186.    The following built-in subsym functions allow examination of the
  13187. string value of subsyms (or ordinary strings).  The arguments are
  13188. strings unless otherwise indicated (subsyms passed as args will be
  13189. replaced by the strings they represent).
  13190. ``$symlen(STR)''
  13191.      Returns the length of STR.
  13192.  
  13193. ``$symcmp(STR1,STR2)''
  13194.      Returns 0 if STR1 == STR2, non-zero otherwise.
  13195.  
  13196. ``$firstch(STR,CH)''
  13197.      Returns index of the first occurrence of character constant CH in
  13198.      STR.
  13199.  
  13200. ``$lastch(STR,CH)''
  13201.      Returns index of the last occurrence of character constant CH in
  13202.      STR.
  13203.  
  13204. ``$isdefed(SYMBOL)''
  13205.      Returns zero if the symbol SYMBOL is not in the symbol table,
  13206.      non-zero otherwise.
  13207.  
  13208. ``$ismember(SYMBOL,LIST)''
  13209.      Assign the first member of comma-separated string LIST to SYMBOL;
  13210.      LIST is reassigned the remainder of the list.  Returns zero if
  13211.      LIST is a null string.  Both arguments must be subsyms.
  13212.  
  13213. ``$iscons(EXPR)''
  13214.      Returns 1 if string EXPR is binary, 2 if octal, 3 if hexadecimal,
  13215.      4 if a character, 5 if decimal, and zero if not an integer.
  13216.  
  13217. ``$isname(NAME)''
  13218.      Returns 1 if NAME is a valid symbol name, zero otherwise.
  13219.  
  13220. ``$isreg(REG)''
  13221.      Returns 1 if REG is a valid predefined register name (AR0-AR7
  13222.      only).
  13223.  
  13224. ``$structsz(STAG)''
  13225.      Returns the size of the structure or union represented by STAG.
  13226.  
  13227. ``$structacc(STAG)''
  13228.      Returns the reference point of the structure or union represented
  13229.      by STAG.   Always returns zero.
  13230.  
  13231.  
  13232. 
  13233. File: as.info,  Node: TIC54X-MMRegs,  Prev: TIC54X-Macros,  Up: TIC54X-Dependent
  13234.  
  13235. 8.30.11 Memory-mapped Registers
  13236. -------------------------------
  13237.  
  13238. The following symbols are recognized as memory-mapped registers:
  13239.  
  13240.  
  13241. 
  13242. File: as.info,  Node: Z8000-Dependent,  Next: Vax-Dependent,  Prev: Xtensa-Dependent,  Up: Machine Dependencies
  13243.  
  13244. 8.31 Z8000 Dependent Features
  13245. =============================
  13246.  
  13247.    The Z8000 as supports both members of the Z8000 family: the
  13248. unsegmented Z8002, with 16 bit addresses, and the segmented Z8001 with
  13249. 24 bit addresses.
  13250.  
  13251.    When the assembler is in unsegmented mode (specified with the
  13252. `unsegm' directive), an address takes up one word (16 bit) sized
  13253. register.  When the assembler is in segmented mode (specified with the
  13254. `segm' directive), a 24-bit address takes up a long (32 bit) register.
  13255. *Note Assembler Directives for the Z8000: Z8000 Directives, for a list
  13256. of other Z8000 specific assembler directives.
  13257.  
  13258. * Menu:
  13259.  
  13260. * Z8000 Options::               Command-line options for the Z8000
  13261. * Z8000 Syntax::                Assembler syntax for the Z8000
  13262. * Z8000 Directives::            Special directives for the Z8000
  13263. * Z8000 Opcodes::               Opcodes
  13264.  
  13265. 
  13266. File: as.info,  Node: Z8000 Options,  Next: Z8000 Syntax,  Up: Z8000-Dependent
  13267.  
  13268. 8.31.1 Options
  13269. --------------
  13270.  
  13271. `-z8001'
  13272.      Generate segmented code by default.
  13273.  
  13274. `-z8002'
  13275.      Generate unsegmented code by default.
  13276.  
  13277. 
  13278. File: as.info,  Node: Z8000 Syntax,  Next: Z8000 Directives,  Prev: Z8000 Options,  Up: Z8000-Dependent
  13279.  
  13280. 8.31.2 Syntax
  13281. -------------
  13282.  
  13283. * Menu:
  13284.  
  13285. * Z8000-Chars::                Special Characters
  13286. * Z8000-Regs::                 Register Names
  13287. * Z8000-Addressing::           Addressing Modes
  13288.  
  13289. 
  13290. File: as.info,  Node: Z8000-Chars,  Next: Z8000-Regs,  Up: Z8000 Syntax
  13291.  
  13292. 8.31.2.1 Special Characters
  13293. ...........................
  13294.  
  13295. `!' is the line comment character.
  13296.  
  13297.    You can use `;' instead of a newline to separate statements.
  13298.  
  13299. 
  13300. File: as.info,  Node: Z8000-Regs,  Next: Z8000-Addressing,  Prev: Z8000-Chars,  Up: Z8000 Syntax
  13301.  
  13302. 8.31.2.2 Register Names
  13303. .......................
  13304.  
  13305. The Z8000 has sixteen 16 bit registers, numbered 0 to 15.  You can refer
  13306. to different sized groups of registers by register number, with the
  13307. prefix `r' for 16 bit registers, `rr' for 32 bit registers and `rq' for
  13308. 64 bit registers.  You can also refer to the contents of the first
  13309. eight (of the sixteen 16 bit registers) by bytes.  They are named `rlN'
  13310. and `rhN'.
  13311.  
  13312. _byte registers_
  13313.      rl0 rh0 rl1 rh1 rl2 rh2 rl3 rh3
  13314.      rl4 rh4 rl5 rh5 rl6 rh6 rl7 rh7
  13315.  
  13316. _word registers_
  13317.      r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
  13318.  
  13319. _long word registers_
  13320.      rr0 rr2 rr4 rr6 rr8 rr10 rr12 rr14
  13321.  
  13322. _quad word registers_
  13323.      rq0 rq4 rq8 rq12
  13324.  
  13325. 
  13326. File: as.info,  Node: Z8000-Addressing,  Prev: Z8000-Regs,  Up: Z8000 Syntax
  13327.  
  13328. 8.31.2.3 Addressing Modes
  13329. .........................
  13330.  
  13331. as understands the following addressing modes for the Z8000:
  13332.  
  13333. `rlN'
  13334. `rhN'
  13335. `rN'
  13336. `rrN'
  13337. `rqN'
  13338.      Register direct:  8bit, 16bit, 32bit, and 64bit registers.
  13339.  
  13340. `@rN'
  13341. `@rrN'
  13342.      Indirect register:  @rrN in segmented mode, @rN in unsegmented
  13343.      mode.
  13344.  
  13345. `ADDR'
  13346.      Direct: the 16 bit or 24 bit address (depending on whether the
  13347.      assembler is in segmented or unsegmented mode) of the operand is
  13348.      in the instruction.
  13349.  
  13350. `address(rN)'
  13351.      Indexed: the 16 or 24 bit address is added to the 16 bit register
  13352.      to produce the final address in memory of the operand.
  13353.  
  13354. `rN(#IMM)'
  13355. `rrN(#IMM)'
  13356.      Base Address: the 16 or 24 bit register is added to the 16 bit sign
  13357.      extended immediate displacement to produce the final address in
  13358.      memory of the operand.
  13359.  
  13360. `rN(rM)'
  13361. `rrN(rM)'
  13362.      Base Index: the 16 or 24 bit register rN or rrN is added to the
  13363.      sign extended 16 bit index register rM to produce the final
  13364.      address in memory of the operand.
  13365.  
  13366. `#XX'
  13367.      Immediate data XX.
  13368.  
  13369. 
  13370. File: as.info,  Node: Z8000 Directives,  Next: Z8000 Opcodes,  Prev: Z8000 Syntax,  Up: Z8000-Dependent
  13371.  
  13372. 8.31.3 Assembler Directives for the Z8000
  13373. -----------------------------------------
  13374.  
  13375. The Z8000 port of as includes additional assembler directives, for
  13376. compatibility with other Z8000 assemblers.  These do not begin with `.'
  13377. (unlike the ordinary as directives).
  13378.  
  13379. `segm'
  13380. `.z8001'
  13381.      Generate code for the segmented Z8001.
  13382.  
  13383. `unsegm'
  13384. `.z8002'
  13385.      Generate code for the unsegmented Z8002.
  13386.  
  13387. `name'
  13388.      Synonym for `.file'
  13389.  
  13390. `global'
  13391.      Synonym for `.global'
  13392.  
  13393. `wval'
  13394.      Synonym for `.word'
  13395.  
  13396. `lval'
  13397.      Synonym for `.long'
  13398.  
  13399. `bval'
  13400.      Synonym for `.byte'
  13401.  
  13402. `sval'
  13403.      Assemble a string.  `sval' expects one string literal, delimited by
  13404.      single quotes.  It assembles each byte of the string into
  13405.      consecutive addresses.  You can use the escape sequence `%XX'
  13406.      (where XX represents a two-digit hexadecimal number) to represent
  13407.      the character whose ASCII value is XX.  Use this feature to
  13408.      describe single quote and other characters that may not appear in
  13409.      string literals as themselves.  For example, the C statement
  13410.      `char *a = "he said \"it's 50% off\"";' is represented in Z8000
  13411.      assembly language (shown with the assembler output in hex at the
  13412.      left) as
  13413.  
  13414.           68652073    sval    'he said %22it%27s 50%25 off%22%00'
  13415.           61696420
  13416.           22697427
  13417.           73203530
  13418.           25206F66
  13419.           662200
  13420.  
  13421. `rsect'
  13422.      synonym for `.section'
  13423.  
  13424. `block'
  13425.      synonym for `.space'
  13426.  
  13427. `even'
  13428.      special case of `.align'; aligns output to even byte boundary.
  13429.  
  13430. 
  13431. File: as.info,  Node: Z8000 Opcodes,  Prev: Z8000 Directives,  Up: Z8000-Dependent
  13432.  
  13433. 8.31.4 Opcodes
  13434. --------------
  13435.  
  13436. For detailed information on the Z8000 machine instruction set, see
  13437. `Z8000 Technical Manual'.
  13438.  
  13439.    The following table summarizes the opcodes and their arguments:
  13440.  
  13441.                  rs   16 bit source register
  13442.                  rd   16 bit destination register
  13443.                  rbs   8 bit source register
  13444.                  rbd   8 bit destination register
  13445.                  rrs   32 bit source register
  13446.                  rrd   32 bit destination register
  13447.                  rqs   64 bit source register
  13448.                  rqd   64 bit destination register
  13449.                  addr 16/24 bit address
  13450.                  imm  immediate data
  13451.  
  13452.      adc rd,rs               clrb addr               cpsir @rd,@rs,rr,cc
  13453.      adcb rbd,rbs            clrb addr(rd)           cpsirb @rd,@rs,rr,cc
  13454.      add rd,@rs              clrb rbd                dab rbd
  13455.      add rd,addr             com @rd                 dbjnz rbd,disp7
  13456.      add rd,addr(rs)         com addr                dec @rd,imm4m1
  13457.      add rd,imm16            com addr(rd)            dec addr(rd),imm4m1
  13458.      add rd,rs               com rd                  dec addr,imm4m1
  13459.      addb rbd,@rs            comb @rd                dec rd,imm4m1
  13460.      addb rbd,addr           comb addr               decb @rd,imm4m1
  13461.      addb rbd,addr(rs)       comb addr(rd)           decb addr(rd),imm4m1
  13462.      addb rbd,imm8           comb rbd                decb addr,imm4m1
  13463.      addb rbd,rbs            comflg flags            decb rbd,imm4m1
  13464.      addl rrd,@rs            cp @rd,imm16            di i2
  13465.      addl rrd,addr           cp addr(rd),imm16       div rrd,@rs
  13466.      addl rrd,addr(rs)       cp addr,imm16           div rrd,addr
  13467.      addl rrd,imm32          cp rd,@rs               div rrd,addr(rs)
  13468.      addl rrd,rrs            cp rd,addr              div rrd,imm16
  13469.      and rd,@rs              cp rd,addr(rs)          div rrd,rs
  13470.      and rd,addr             cp rd,imm16             divl rqd,@rs
  13471.      and rd,addr(rs)         cp rd,rs                divl rqd,addr
  13472.      and rd,imm16            cpb @rd,imm8            divl rqd,addr(rs)
  13473.      and rd,rs               cpb addr(rd),imm8       divl rqd,imm32
  13474.      andb rbd,@rs            cpb addr,imm8           divl rqd,rrs
  13475.      andb rbd,addr           cpb rbd,@rs             djnz rd,disp7
  13476.      andb rbd,addr(rs)       cpb rbd,addr            ei i2
  13477.      andb rbd,imm8           cpb rbd,addr(rs)        ex rd,@rs
  13478.      andb rbd,rbs            cpb rbd,imm8            ex rd,addr
  13479.      bit @rd,imm4            cpb rbd,rbs             ex rd,addr(rs)
  13480.      bit addr(rd),imm4       cpd rd,@rs,rr,cc        ex rd,rs
  13481.      bit addr,imm4           cpdb rbd,@rs,rr,cc      exb rbd,@rs
  13482.      bit rd,imm4             cpdr rd,@rs,rr,cc       exb rbd,addr
  13483.      bit rd,rs               cpdrb rbd,@rs,rr,cc     exb rbd,addr(rs)
  13484.      bitb @rd,imm4           cpi rd,@rs,rr,cc        exb rbd,rbs
  13485.      bitb addr(rd),imm4      cpib rbd,@rs,rr,cc      ext0e imm8
  13486.      bitb addr,imm4          cpir rd,@rs,rr,cc       ext0f imm8
  13487.      bitb rbd,imm4           cpirb rbd,@rs,rr,cc     ext8e imm8
  13488.      bitb rbd,rs             cpl rrd,@rs             ext8f imm8
  13489.      bpt                     cpl rrd,addr            exts rrd
  13490.      call @rd                cpl rrd,addr(rs)        extsb rd
  13491.      call addr               cpl rrd,imm32           extsl rqd
  13492.      call addr(rd)           cpl rrd,rrs             halt
  13493.      calr disp12             cpsd @rd,@rs,rr,cc      in rd,@rs
  13494.      clr @rd                 cpsdb @rd,@rs,rr,cc     in rd,imm16
  13495.      clr addr                cpsdr @rd,@rs,rr,cc     inb rbd,@rs
  13496.      clr addr(rd)            cpsdrb @rd,@rs,rr,cc    inb rbd,imm16
  13497.      clr rd                  cpsi @rd,@rs,rr,cc      inc @rd,imm4m1
  13498.      clrb @rd                cpsib @rd,@rs,rr,cc     inc addr(rd),imm4m1
  13499.      inc addr,imm4m1         ldb rbd,rs(rx)          mult rrd,addr(rs)
  13500.      inc rd,imm4m1           ldb rd(imm16),rbs       mult rrd,imm16
  13501.      incb @rd,imm4m1         ldb rd(rx),rbs          mult rrd,rs
  13502.      incb addr(rd),imm4m1    ldctl ctrl,rs           multl rqd,@rs
  13503.      incb addr,imm4m1        ldctl rd,ctrl           multl rqd,addr
  13504.      incb rbd,imm4m1         ldd @rs,@rd,rr          multl rqd,addr(rs)
  13505.      ind @rd,@rs,ra          lddb @rs,@rd,rr         multl rqd,imm32
  13506.      indb @rd,@rs,rba        lddr @rs,@rd,rr         multl rqd,rrs
  13507.      inib @rd,@rs,ra         lddrb @rs,@rd,rr        neg @rd
  13508.      inibr @rd,@rs,ra        ldi @rd,@rs,rr          neg addr
  13509.      iret                    ldib @rd,@rs,rr         neg addr(rd)
  13510.      jp cc,@rd               ldir @rd,@rs,rr         neg rd
  13511.      jp cc,addr              ldirb @rd,@rs,rr        negb @rd
  13512.      jp cc,addr(rd)          ldk rd,imm4             negb addr
  13513.      jr cc,disp8             ldl @rd,rrs             negb addr(rd)
  13514.      ld @rd,imm16            ldl addr(rd),rrs        negb rbd
  13515.      ld @rd,rs               ldl addr,rrs            nop
  13516.      ld addr(rd),imm16       ldl rd(imm16),rrs       or rd,@rs
  13517.      ld addr(rd),rs          ldl rd(rx),rrs          or rd,addr
  13518.      ld addr,imm16           ldl rrd,@rs             or rd,addr(rs)
  13519.      ld addr,rs              ldl rrd,addr            or rd,imm16
  13520.      ld rd(imm16),rs         ldl rrd,addr(rs)        or rd,rs
  13521.      ld rd(rx),rs            ldl rrd,imm32           orb rbd,@rs
  13522.      ld rd,@rs               ldl rrd,rrs             orb rbd,addr
  13523.      ld rd,addr              ldl rrd,rs(imm16)       orb rbd,addr(rs)
  13524.      ld rd,addr(rs)          ldl rrd,rs(rx)          orb rbd,imm8
  13525.      ld rd,imm16             ldm @rd,rs,n            orb rbd,rbs
  13526.      ld rd,rs                ldm addr(rd),rs,n       out @rd,rs
  13527.      ld rd,rs(imm16)         ldm addr,rs,n           out imm16,rs
  13528.      ld rd,rs(rx)            ldm rd,@rs,n            outb @rd,rbs
  13529.      lda rd,addr             ldm rd,addr(rs),n       outb imm16,rbs
  13530.      lda rd,addr(rs)         ldm rd,addr,n           outd @rd,@rs,ra
  13531.      lda rd,rs(imm16)        ldps @rs                outdb @rd,@rs,rba
  13532.      lda rd,rs(rx)           ldps addr               outib @rd,@rs,ra
  13533.      ldar rd,disp16          ldps addr(rs)           outibr @rd,@rs,ra
  13534.      ldb @rd,imm8            ldr disp16,rs           pop @rd,@rs
  13535.      ldb @rd,rbs             ldr rd,disp16           pop addr(rd),@rs
  13536.      ldb addr(rd),imm8       ldrb disp16,rbs         pop addr,@rs
  13537.      ldb addr(rd),rbs        ldrb rbd,disp16         pop rd,@rs
  13538.      ldb addr,imm8           ldrl disp16,rrs         popl @rd,@rs
  13539.      ldb addr,rbs            ldrl rrd,disp16         popl addr(rd),@rs
  13540.      ldb rbd,@rs             mbit                    popl addr,@rs
  13541.      ldb rbd,addr            mreq rd                 popl rrd,@rs
  13542.      ldb rbd,addr(rs)        mres                    push @rd,@rs
  13543.      ldb rbd,imm8            mset                    push @rd,addr
  13544.      ldb rbd,rbs             mult rrd,@rs            push @rd,addr(rs)
  13545.      ldb rbd,rs(imm16)       mult rrd,addr           push @rd,imm16
  13546.      push @rd,rs             set addr,imm4           subl rrd,imm32
  13547.      pushl @rd,@rs           set rd,imm4             subl rrd,rrs
  13548.      pushl @rd,addr          set rd,rs               tcc cc,rd
  13549.      pushl @rd,addr(rs)      setb @rd,imm4           tccb cc,rbd
  13550.      pushl @rd,rrs           setb addr(rd),imm4      test @rd
  13551.      res @rd,imm4            setb addr,imm4          test addr
  13552.      res addr(rd),imm4       setb rbd,imm4           test addr(rd)
  13553.      res addr,imm4           setb rbd,rs             test rd
  13554.      res rd,imm4             setflg imm4             testb @rd
  13555.      res rd,rs               sinb rbd,imm16          testb addr
  13556.      resb @rd,imm4           sinb rd,imm16           testb addr(rd)
  13557.      resb addr(rd),imm4      sind @rd,@rs,ra         testb rbd
  13558.      resb addr,imm4          sindb @rd,@rs,rba       testl @rd
  13559.      resb rbd,imm4           sinib @rd,@rs,ra        testl addr
  13560.      resb rbd,rs             sinibr @rd,@rs,ra       testl addr(rd)
  13561.      resflg imm4             sla rd,imm8             testl rrd
  13562.      ret cc                  slab rbd,imm8           trdb @rd,@rs,rba
  13563.      rl rd,imm1or2           slal rrd,imm8           trdrb @rd,@rs,rba
  13564.      rlb rbd,imm1or2         sll rd,imm8             trib @rd,@rs,rbr
  13565.      rlc rd,imm1or2          sllb rbd,imm8           trirb @rd,@rs,rbr
  13566.      rlcb rbd,imm1or2        slll rrd,imm8           trtdrb @ra,@rb,rbr
  13567.      rldb rbb,rba            sout imm16,rs           trtib @ra,@rb,rr
  13568.      rr rd,imm1or2           soutb imm16,rbs         trtirb @ra,@rb,rbr
  13569.      rrb rbd,imm1or2         soutd @rd,@rs,ra        trtrb @ra,@rb,rbr
  13570.      rrc rd,imm1or2          soutdb @rd,@rs,rba      tset @rd
  13571.      rrcb rbd,imm1or2        soutib @rd,@rs,ra       tset addr
  13572.      rrdb rbb,rba            soutibr @rd,@rs,ra      tset addr(rd)
  13573.      rsvd36                  sra rd,imm8             tset rd
  13574.      rsvd38                  srab rbd,imm8           tsetb @rd
  13575.      rsvd78                  sral rrd,imm8           tsetb addr
  13576.      rsvd7e                  srl rd,imm8             tsetb addr(rd)
  13577.      rsvd9d                  srlb rbd,imm8           tsetb rbd
  13578.      rsvd9f                  srll rrd,imm8           xor rd,@rs
  13579.      rsvdb9                  sub rd,@rs              xor rd,addr
  13580.      rsvdbf                  sub rd,addr             xor rd,addr(rs)
  13581.      sbc rd,rs               sub rd,addr(rs)         xor rd,imm16
  13582.      sbcb rbd,rbs            sub rd,imm16            xor rd,rs
  13583.      sc imm8                 sub rd,rs               xorb rbd,@rs
  13584.      sda rd,rs               subb rbd,@rs            xorb rbd,addr
  13585.      sdab rbd,rs             subb rbd,addr           xorb rbd,addr(rs)
  13586.      sdal rrd,rs             subb rbd,addr(rs)       xorb rbd,imm8
  13587.      sdl rd,rs               subb rbd,imm8           xorb rbd,rbs
  13588.      sdlb rbd,rs             subb rbd,rbs            xorb rbd,rbs
  13589.      sdll rrd,rs             subl rrd,@rs
  13590.      set @rd,imm4            subl rrd,addr
  13591.      set addr(rd),imm4       subl rrd,addr(rs)
  13592.  
  13593. 
  13594. File: as.info,  Node: Vax-Dependent,  Prev: Z8000-Dependent,  Up: Machine Dependencies
  13595.  
  13596. 8.32 VAX Dependent Features
  13597. ===========================
  13598.  
  13599. * Menu:
  13600.  
  13601. * VAX-Opts::                    VAX Command-Line Options
  13602. * VAX-float::                   VAX Floating Point
  13603. * VAX-directives::              Vax Machine Directives
  13604. * VAX-opcodes::                 VAX Opcodes
  13605. * VAX-branch::                  VAX Branch Improvement
  13606. * VAX-operands::                VAX Operands
  13607. * VAX-no::                      Not Supported on VAX
  13608.  
  13609. 
  13610. File: as.info,  Node: VAX-Opts,  Next: VAX-float,  Up: Vax-Dependent
  13611.  
  13612. 8.32.1 VAX Command-Line Options
  13613. -------------------------------
  13614.  
  13615. The Vax version of `as' accepts any of the following options, gives a
  13616. warning message that the option was ignored and proceeds.  These
  13617. options are for compatibility with scripts designed for other people's
  13618. assemblers.
  13619.  
  13620. ``-D' (Debug)'
  13621. ``-S' (Symbol Table)'
  13622. ``-T' (Token Trace)'
  13623.      These are obsolete options used to debug old assemblers.
  13624.  
  13625. ``-d' (Displacement size for JUMPs)'
  13626.      This option expects a number following the `-d'.  Like options
  13627.      that expect filenames, the number may immediately follow the `-d'
  13628.      (old standard) or constitute the whole of the command line
  13629.      argument that follows `-d' (GNU standard).
  13630.  
  13631. ``-V' (Virtualize Interpass Temporary File)'
  13632.      Some other assemblers use a temporary file.  This option commanded
  13633.      them to keep the information in active memory rather than in a
  13634.      disk file.  `as' always does this, so this option is redundant.
  13635.  
  13636. ``-J' (JUMPify Longer Branches)'
  13637.      Many 32-bit computers permit a variety of branch instructions to
  13638.      do the same job.  Some of these instructions are short (and fast)
  13639.      but have a limited range; others are long (and slow) but can
  13640.      branch anywhere in virtual memory.  Often there are 3 flavors of
  13641.      branch: short, medium and long.  Some other assemblers would emit
  13642.      short and medium branches, unless told by this option to emit
  13643.      short and long branches.
  13644.  
  13645. ``-t' (Temporary File Directory)'
  13646.      Some other assemblers may use a temporary file, and this option
  13647.      takes a filename being the directory to site the temporary file.
  13648.      Since `as' does not use a temporary disk file, this option makes
  13649.      no difference.  `-t' needs exactly one filename.
  13650.  
  13651.    The Vax version of the assembler accepts additional options when
  13652. compiled for VMS:
  13653.  
  13654. `-h N'
  13655.      External symbol or section (used for global variables) names are
  13656.      not case sensitive on VAX/VMS and always mapped to upper case.
  13657.      This is contrary to the C language definition which explicitly
  13658.      distinguishes upper and lower case.  To implement a standard
  13659.      conforming C compiler, names must be changed (mapped) to preserve
  13660.      the case information.  The default mapping is to convert all lower
  13661.      case characters to uppercase and adding an underscore followed by
  13662.      a 6 digit hex value, representing a 24 digit binary value.  The
  13663.      one digits in the binary value represent which characters are
  13664.      uppercase in the original symbol name.
  13665.  
  13666.      The `-h N' option determines how we map names.  This takes several
  13667.      values.  No `-h' switch at all allows case hacking as described
  13668.      above.  A value of zero (`-h0') implies names should be upper
  13669.      case, and inhibits the case hack.  A value of 2 (`-h2') implies
  13670.      names should be all lower case, with no case hack.  A value of 3
  13671.      (`-h3') implies that case should be preserved.  The value 1 is
  13672.      unused.  The `-H' option directs `as' to display every mapped
  13673.      symbol during assembly.
  13674.  
  13675.      Symbols whose names include a dollar sign `$' are exceptions to the
  13676.      general name mapping.  These symbols are normally only used to
  13677.      reference VMS library names.  Such symbols are always mapped to
  13678.      upper case.
  13679.  
  13680. `-+'
  13681.      The `-+' option causes `as' to truncate any symbol name larger
  13682.      than 31 characters.  The `-+' option also prevents some code
  13683.      following the `_main' symbol normally added to make the object
  13684.      file compatible with Vax-11 "C".
  13685.  
  13686. `-1'
  13687.      This option is ignored for backward compatibility with `as'
  13688.      version 1.x.
  13689.  
  13690. `-H'
  13691.      The `-H' option causes `as' to print every symbol which was
  13692.      changed by case mapping.
  13693.  
  13694. 
  13695. File: as.info,  Node: VAX-float,  Next: VAX-directives,  Prev: VAX-Opts,  Up: Vax-Dependent
  13696.  
  13697. 8.32.2 VAX Floating Point
  13698. -------------------------
  13699.  
  13700. Conversion of flonums to floating point is correct, and compatible with
  13701. previous assemblers.  Rounding is towards zero if the remainder is
  13702. exactly half the least significant bit.
  13703.  
  13704.    `D', `F', `G' and `H' floating point formats are understood.
  13705.  
  13706.    Immediate floating literals (_e.g._ `S`$6.9') are rendered
  13707. correctly.  Again, rounding is towards zero in the boundary case.
  13708.  
  13709.    The `.float' directive produces `f' format numbers.  The `.double'
  13710. directive produces `d' format numbers.
  13711.  
  13712. 
  13713. File: as.info,  Node: VAX-directives,  Next: VAX-opcodes,  Prev: VAX-float,  Up: Vax-Dependent
  13714.  
  13715. 8.32.3 Vax Machine Directives
  13716. -----------------------------
  13717.  
  13718. The Vax version of the assembler supports four directives for
  13719. generating Vax floating point constants.  They are described in the
  13720. table below.
  13721.  
  13722. `.dfloat'
  13723.      This expects zero or more flonums, separated by commas, and
  13724.      assembles Vax `d' format 64-bit floating point constants.
  13725.  
  13726. `.ffloat'
  13727.      This expects zero or more flonums, separated by commas, and
  13728.      assembles Vax `f' format 32-bit floating point constants.
  13729.  
  13730. `.gfloat'
  13731.      This expects zero or more flonums, separated by commas, and
  13732.      assembles Vax `g' format 64-bit floating point constants.
  13733.  
  13734. `.hfloat'
  13735.      This expects zero or more flonums, separated by commas, and
  13736.      assembles Vax `h' format 128-bit floating point constants.
  13737.  
  13738.  
  13739. 
  13740. File: as.info,  Node: VAX-opcodes,  Next: VAX-branch,  Prev: VAX-directives,  Up: Vax-Dependent
  13741.  
  13742. 8.32.4 VAX Opcodes
  13743. ------------------
  13744.  
  13745. All DEC mnemonics are supported.  Beware that `case...' instructions
  13746. have exactly 3 operands.  The dispatch table that follows the `case...'
  13747. instruction should be made with `.word' statements.  This is compatible
  13748. with all unix assemblers we know of.
  13749.  
  13750. 
  13751. File: as.info,  Node: VAX-branch,  Next: VAX-operands,  Prev: VAX-opcodes,  Up: Vax-Dependent
  13752.  
  13753. 8.32.5 VAX Branch Improvement
  13754. -----------------------------
  13755.  
  13756. Certain pseudo opcodes are permitted.  They are for branch
  13757. instructions.  They expand to the shortest branch instruction that
  13758. reaches the target.  Generally these mnemonics are made by substituting
  13759. `j' for `b' at the start of a DEC mnemonic.  This feature is included
  13760. both for compatibility and to help compilers.  If you do not need this
  13761. feature, avoid these opcodes.  Here are the mnemonics, and the code
  13762. they can expand into.
  13763.  
  13764. `jbsb'
  13765.      `Jsb' is already an instruction mnemonic, so we chose `jbsb'.
  13766.     (byte displacement)
  13767.           `bsbb ...'
  13768.  
  13769.     (word displacement)
  13770.           `bsbw ...'
  13771.  
  13772.     (long displacement)
  13773.           `jsb ...'
  13774.  
  13775. `jbr'
  13776. `jr'
  13777.      Unconditional branch.
  13778.     (byte displacement)
  13779.           `brb ...'
  13780.  
  13781.     (word displacement)
  13782.           `brw ...'
  13783.  
  13784.     (long displacement)
  13785.           `jmp ...'
  13786.  
  13787. `jCOND'
  13788.      COND may be any one of the conditional branches `neq', `nequ',
  13789.      `eql', `eqlu', `gtr', `geq', `lss', `gtru', `lequ', `vc', `vs',
  13790.      `gequ', `cc', `lssu', `cs'.  COND may also be one of the bit tests
  13791.      `bs', `bc', `bss', `bcs', `bsc', `bcc', `bssi', `bcci', `lbs',
  13792.      `lbc'.  NOTCOND is the opposite condition to COND.
  13793.     (byte displacement)
  13794.           `bCOND ...'
  13795.  
  13796.     (word displacement)
  13797.           `bNOTCOND foo ; brw ... ; foo:'
  13798.  
  13799.     (long displacement)
  13800.           `bNOTCOND foo ; jmp ... ; foo:'
  13801.  
  13802. `jacbX'
  13803.      X may be one of `b d f g h l w'.
  13804.     (word displacement)
  13805.           `OPCODE ...'
  13806.  
  13807.     (long displacement)
  13808.                OPCODE ..., foo ;
  13809.                brb bar ;
  13810.                foo: jmp ... ;
  13811.                bar:
  13812.  
  13813. `jaobYYY'
  13814.      YYY may be one of `lss leq'.
  13815.  
  13816. `jsobZZZ'
  13817.      ZZZ may be one of `geq gtr'.
  13818.     (byte displacement)
  13819.           `OPCODE ...'
  13820.  
  13821.     (word displacement)
  13822.                OPCODE ..., foo ;
  13823.                brb bar ;
  13824.                foo: brw DESTINATION ;
  13825.                bar:
  13826.  
  13827.     (long displacement)
  13828.                OPCODE ..., foo ;
  13829.                brb bar ;
  13830.                foo: jmp DESTINATION ;
  13831.                bar:
  13832.  
  13833. `aobleq'
  13834. `aoblss'
  13835. `sobgeq'
  13836. `sobgtr'
  13837.  
  13838.     (byte displacement)
  13839.           `OPCODE ...'
  13840.  
  13841.     (word displacement)
  13842.                OPCODE ..., foo ;
  13843.                brb bar ;
  13844.                foo: brw DESTINATION ;
  13845.                bar:
  13846.  
  13847.     (long displacement)
  13848.                OPCODE ..., foo ;
  13849.                brb bar ;
  13850.                foo: jmp DESTINATION ;
  13851.                bar:
  13852.  
  13853. 
  13854. File: as.info,  Node: VAX-operands,  Next: VAX-no,  Prev: VAX-branch,  Up: Vax-Dependent
  13855.  
  13856. 8.32.6 VAX Operands
  13857. -------------------
  13858.  
  13859. The immediate character is `$' for Unix compatibility, not `#' as DEC
  13860. writes it.
  13861.  
  13862.    The indirect character is `*' for Unix compatibility, not `@' as DEC
  13863. writes it.
  13864.  
  13865.    The displacement sizing character is ``' (an accent grave) for Unix
  13866. compatibility, not `^' as DEC writes it.  The letter preceding ``' may
  13867. have either case.  `G' is not understood, but all other letters (`b i l
  13868. s w') are understood.
  13869.  
  13870.    Register names understood are `r0 r1 r2 ... r15 ap fp sp pc'.  Upper
  13871. and lower case letters are equivalent.
  13872.  
  13873.    For instance
  13874.      tstb *w`$4(r5)
  13875.  
  13876.    Any expression is permitted in an operand.  Operands are comma
  13877. separated.
  13878.  
  13879. 
  13880. File: as.info,  Node: VAX-no,  Prev: VAX-operands,  Up: Vax-Dependent
  13881.  
  13882. 8.32.7 Not Supported on VAX
  13883. ---------------------------
  13884.  
  13885. Vax bit fields can not be assembled with `as'.  Someone can add the
  13886. required code if they really need it.
  13887.  
  13888. 
  13889. File: as.info,  Node: V850-Dependent,  Next: Xtensa-Dependent,  Prev: TIC54X-Dependent,  Up: Machine Dependencies
  13890.  
  13891. 8.33 v850 Dependent Features
  13892. ============================
  13893.  
  13894. * Menu:
  13895.  
  13896. * V850 Options::              Options
  13897. * V850 Syntax::               Syntax
  13898. * V850 Floating Point::       Floating Point
  13899. * V850 Directives::           V850 Machine Directives
  13900. * V850 Opcodes::              Opcodes
  13901.  
  13902. 
  13903. File: as.info,  Node: V850 Options,  Next: V850 Syntax,  Up: V850-Dependent
  13904.  
  13905. 8.33.1 Options
  13906. --------------
  13907.  
  13908. `as' supports the following additional command-line options for the
  13909. V850 processor family:
  13910.  
  13911. `-wsigned_overflow'
  13912.      Causes warnings to be produced when signed immediate values
  13913.      overflow the space available for then within their opcodes.  By
  13914.      default this option is disabled as it is possible to receive
  13915.      spurious warnings due to using exact bit patterns as immediate
  13916.      constants.
  13917.  
  13918. `-wunsigned_overflow'
  13919.      Causes warnings to be produced when unsigned immediate values
  13920.      overflow the space available for then within their opcodes.  By
  13921.      default this option is disabled as it is possible to receive
  13922.      spurious warnings due to using exact bit patterns as immediate
  13923.      constants.
  13924.  
  13925. `-mv850'
  13926.      Specifies that the assembled code should be marked as being
  13927.      targeted at the V850 processor.  This allows the linker to detect
  13928.      attempts to link such code with code assembled for other
  13929.      processors.
  13930.  
  13931. `-mv850e'
  13932.      Specifies that the assembled code should be marked as being
  13933.      targeted at the V850E processor.  This allows the linker to detect
  13934.      attempts to link such code with code assembled for other
  13935.      processors.
  13936.  
  13937. `-mv850e1'
  13938.      Specifies that the assembled code should be marked as being
  13939.      targeted at the V850E1 processor.  This allows the linker to
  13940.      detect attempts to link such code with code assembled for other
  13941.      processors.
  13942.  
  13943. `-mv850any'
  13944.      Specifies that the assembled code should be marked as being
  13945.      targeted at the V850 processor but support instructions that are
  13946.      specific to the extended variants of the process.  This allows the
  13947.      production of binaries that contain target specific code, but
  13948.      which are also intended to be used in a generic fashion.  For
  13949.      example libgcc.a contains generic routines used by the code
  13950.      produced by GCC for all versions of the v850 architecture,
  13951.      together with support routines only used by the V850E architecture.
  13952.  
  13953. `-mrelax'
  13954.      Enables relaxation.  This allows the .longcall and .longjump pseudo
  13955.      ops to be used in the assembler source code.  These ops label
  13956.      sections of code which are either a long function call or a long
  13957.      branch.  The assembler will then flag these sections of code and
  13958.      the linker will attempt to relax them.
  13959.  
  13960.  
  13961. 
  13962. File: as.info,  Node: V850 Syntax,  Next: V850 Floating Point,  Prev: V850 Options,  Up: V850-Dependent
  13963.  
  13964. 8.33.2 Syntax
  13965. -------------
  13966.  
  13967. * Menu:
  13968.  
  13969. * V850-Chars::                Special Characters
  13970. * V850-Regs::                 Register Names
  13971.  
  13972. 
  13973. File: as.info,  Node: V850-Chars,  Next: V850-Regs,  Up: V850 Syntax
  13974.  
  13975. 8.33.2.1 Special Characters
  13976. ...........................
  13977.  
  13978. `#' is the line comment character.
  13979.  
  13980. 
  13981. File: as.info,  Node: V850-Regs,  Prev: V850-Chars,  Up: V850 Syntax
  13982.  
  13983. 8.33.2.2 Register Names
  13984. .......................
  13985.  
  13986. `as' supports the following names for registers:
  13987. `general register 0'
  13988.      r0, zero
  13989.  
  13990. `general register 1'
  13991.      r1
  13992.  
  13993. `general register 2'
  13994.      r2, hp 
  13995.  
  13996. `general register 3'
  13997.      r3, sp 
  13998.  
  13999. `general register 4'
  14000.      r4, gp 
  14001.  
  14002. `general register 5'
  14003.      r5, tp
  14004.  
  14005. `general register 6'
  14006.      r6
  14007.  
  14008. `general register 7'
  14009.      r7
  14010.  
  14011. `general register 8'
  14012.      r8
  14013.  
  14014. `general register 9'
  14015.      r9
  14016.  
  14017. `general register 10'
  14018.      r10
  14019.  
  14020. `general register 11'
  14021.      r11
  14022.  
  14023. `general register 12'
  14024.      r12
  14025.  
  14026. `general register 13'
  14027.      r13
  14028.  
  14029. `general register 14'
  14030.      r14
  14031.  
  14032. `general register 15'
  14033.      r15
  14034.  
  14035. `general register 16'
  14036.      r16
  14037.  
  14038. `general register 17'
  14039.      r17
  14040.  
  14041. `general register 18'
  14042.      r18
  14043.  
  14044. `general register 19'
  14045.      r19
  14046.  
  14047. `general register 20'
  14048.      r20
  14049.  
  14050. `general register 21'
  14051.      r21
  14052.  
  14053. `general register 22'
  14054.      r22
  14055.  
  14056. `general register 23'
  14057.      r23
  14058.  
  14059. `general register 24'
  14060.      r24
  14061.  
  14062. `general register 25'
  14063.      r25
  14064.  
  14065. `general register 26'
  14066.      r26
  14067.  
  14068. `general register 27'
  14069.      r27
  14070.  
  14071. `general register 28'
  14072.      r28
  14073.  
  14074. `general register 29'
  14075.      r29 
  14076.  
  14077. `general register 30'
  14078.      r30, ep 
  14079.  
  14080. `general register 31'
  14081.      r31, lp 
  14082.  
  14083. `system register 0'
  14084.      eipc 
  14085.  
  14086. `system register 1'
  14087.      eipsw 
  14088.  
  14089. `system register 2'
  14090.      fepc 
  14091.  
  14092. `system register 3'
  14093.      fepsw 
  14094.  
  14095. `system register 4'
  14096.      ecr 
  14097.  
  14098. `system register 5'
  14099.      psw 
  14100.  
  14101. `system register 16'
  14102.      ctpc 
  14103.  
  14104. `system register 17'
  14105.      ctpsw 
  14106.  
  14107. `system register 18'
  14108.      dbpc 
  14109.  
  14110. `system register 19'
  14111.      dbpsw 
  14112.  
  14113. `system register 20'
  14114.      ctbp
  14115.  
  14116. 
  14117. File: as.info,  Node: V850 Floating Point,  Next: V850 Directives,  Prev: V850 Syntax,  Up: V850-Dependent
  14118.  
  14119. 8.33.3 Floating Point
  14120. ---------------------
  14121.  
  14122. The V850 family uses IEEE floating-point numbers.
  14123.  
  14124. 
  14125. File: as.info,  Node: V850 Directives,  Next: V850 Opcodes,  Prev: V850 Floating Point,  Up: V850-Dependent
  14126.  
  14127. 8.33.4 V850 Machine Directives
  14128. ------------------------------
  14129.  
  14130. `.offset <EXPRESSION>'
  14131.      Moves the offset into the current section to the specified amount.
  14132.  
  14133. `.section "name", <type>'
  14134.      This is an extension to the standard .section directive.  It sets
  14135.      the current section to be <type> and creates an alias for this
  14136.      section called "name".
  14137.  
  14138. `.v850'
  14139.      Specifies that the assembled code should be marked as being
  14140.      targeted at the V850 processor.  This allows the linker to detect
  14141.      attempts to link such code with code assembled for other
  14142.      processors.
  14143.  
  14144. `.v850e'
  14145.      Specifies that the assembled code should be marked as being
  14146.      targeted at the V850E processor.  This allows the linker to detect
  14147.      attempts to link such code with code assembled for other
  14148.      processors.
  14149.  
  14150. `.v850e1'
  14151.      Specifies that the assembled code should be marked as being
  14152.      targeted at the V850E1 processor.  This allows the linker to
  14153.      detect attempts to link such code with code assembled for other
  14154.      processors.
  14155.  
  14156.  
  14157. 
  14158. File: as.info,  Node: V850 Opcodes,  Prev: V850 Directives,  Up: V850-Dependent
  14159.  
  14160. 8.33.5 Opcodes
  14161. --------------
  14162.  
  14163. `as' implements all the standard V850 opcodes.
  14164.  
  14165.    `as' also implements the following pseudo ops:
  14166.  
  14167. `hi0()'
  14168.      Computes the higher 16 bits of the given expression and stores it
  14169.      into the immediate operand field of the given instruction.  For
  14170.      example:
  14171.  
  14172.      `mulhi hi0(here - there), r5, r6'
  14173.  
  14174.      computes the difference between the address of labels 'here' and
  14175.      'there', takes the upper 16 bits of this difference, shifts it
  14176.      down 16 bits and then mutliplies it by the lower 16 bits in
  14177.      register 5, putting the result into register 6.
  14178.  
  14179. `lo()'
  14180.      Computes the lower 16 bits of the given expression and stores it
  14181.      into the immediate operand field of the given instruction.  For
  14182.      example:
  14183.  
  14184.      `addi lo(here - there), r5, r6'
  14185.  
  14186.      computes the difference between the address of labels 'here' and
  14187.      'there', takes the lower 16 bits of this difference and adds it to
  14188.      register 5, putting the result into register 6.
  14189.  
  14190. `hi()'
  14191.      Computes the higher 16 bits of the given expression and then adds
  14192.      the value of the most significant bit of the lower 16 bits of the
  14193.      expression and stores the result into the immediate operand field
  14194.      of the given instruction.  For example the following code can be
  14195.      used to compute the address of the label 'here' and store it into
  14196.      register 6:
  14197.  
  14198.      `movhi hi(here), r0, r6'     `movea lo(here), r6, r6'
  14199.  
  14200.      The reason for this special behaviour is that movea performs a sign
  14201.      extension on its immediate operand.  So for example if the address
  14202.      of 'here' was 0xFFFFFFFF then without the special behaviour of the
  14203.      hi() pseudo-op the movhi instruction would put 0xFFFF0000 into r6,
  14204.      then the movea instruction would takes its immediate operand,
  14205.      0xFFFF, sign extend it to 32 bits, 0xFFFFFFFF, and then add it
  14206.      into r6 giving 0xFFFEFFFF which is wrong (the fifth nibble is E).
  14207.      With the hi() pseudo op adding in the top bit of the lo() pseudo
  14208.      op, the movhi instruction actually stores 0 into r6 (0xFFFF + 1 =
  14209.      0x0000), so that the movea instruction stores 0xFFFFFFFF into r6 -
  14210.      the right value.
  14211.  
  14212. `hilo()'
  14213.      Computes the 32 bit value of the given expression and stores it
  14214.      into the immediate operand field of the given instruction (which
  14215.      must be a mov instruction).  For example:
  14216.  
  14217.      `mov hilo(here), r6'
  14218.  
  14219.      computes the absolute address of label 'here' and puts the result
  14220.      into register 6.
  14221.  
  14222. `sdaoff()'
  14223.      Computes the offset of the named variable from the start of the
  14224.      Small Data Area (whoes address is held in register 4, the GP
  14225.      register) and stores the result as a 16 bit signed value in the
  14226.      immediate operand field of the given instruction.  For example:
  14227.  
  14228.      `ld.w sdaoff(_a_variable)[gp],r6'
  14229.  
  14230.      loads the contents of the location pointed to by the label
  14231.      '_a_variable' into register 6, provided that the label is located
  14232.      somewhere within +/- 32K of the address held in the GP register.
  14233.      [Note the linker assumes that the GP register contains a fixed
  14234.      address set to the address of the label called '__gp'.  This can
  14235.      either be set up automatically by the linker, or specifically set
  14236.      by using the `--defsym __gp=<value>' command line option].
  14237.  
  14238. `tdaoff()'
  14239.      Computes the offset of the named variable from the start of the
  14240.      Tiny Data Area (whoes address is held in register 30, the EP
  14241.      register) and stores the result as a 4,5, 7 or 8 bit unsigned
  14242.      value in the immediate operand field of the given instruction.
  14243.      For example:
  14244.  
  14245.      `sld.w tdaoff(_a_variable)[ep],r6'
  14246.  
  14247.      loads the contents of the location pointed to by the label
  14248.      '_a_variable' into register 6, provided that the label is located
  14249.      somewhere within +256 bytes of the address held in the EP
  14250.      register.  [Note the linker assumes that the EP register contains
  14251.      a fixed address set to the address of the label called '__ep'.
  14252.      This can either be set up automatically by the linker, or
  14253.      specifically set by using the `--defsym __ep=<value>' command line
  14254.      option].
  14255.  
  14256. `zdaoff()'
  14257.      Computes the offset of the named variable from address 0 and
  14258.      stores the result as a 16 bit signed value in the immediate
  14259.      operand field of the given instruction.  For example:
  14260.  
  14261.      `movea zdaoff(_a_variable),zero,r6'
  14262.  
  14263.      puts the address of the label '_a_variable' into register 6,
  14264.      assuming that the label is somewhere within the first 32K of
  14265.      memory.  (Strictly speaking it also possible to access the last
  14266.      32K of memory as well, as the offsets are signed).
  14267.  
  14268. `ctoff()'
  14269.      Computes the offset of the named variable from the start of the
  14270.      Call Table Area (whoes address is helg in system register 20, the
  14271.      CTBP register) and stores the result a 6 or 16 bit unsigned value
  14272.      in the immediate field of then given instruction or piece of data.
  14273.      For example:
  14274.  
  14275.      `callt ctoff(table_func1)'
  14276.  
  14277.      will put the call the function whoes address is held in the call
  14278.      table at the location labeled 'table_func1'.
  14279.  
  14280. `.longcall `name''
  14281.      Indicates that the following sequence of instructions is a long
  14282.      call to function `name'.  The linker will attempt to shorten this
  14283.      call sequence if `name' is within a 22bit offset of the call.  Only
  14284.      valid if the `-mrelax' command line switch has been enabled.
  14285.  
  14286. `.longjump `name''
  14287.      Indicates that the following sequence of instructions is a long
  14288.      jump to label `name'.  The linker will attempt to shorten this code
  14289.      sequence if `name' is within a 22bit offset of the jump.  Only
  14290.      valid if the `-mrelax' command line switch has been enabled.
  14291.  
  14292.  
  14293.    For information on the V850 instruction set, see `V850 Family
  14294. 32-/16-Bit single-Chip Microcontroller Architecture Manual' from NEC.
  14295. Ltd.
  14296.  
  14297. 
  14298. File: as.info,  Node: Xtensa-Dependent,  Next: Z8000-Dependent,  Prev: V850-Dependent,  Up: Machine Dependencies
  14299.  
  14300. 8.34 Xtensa Dependent Features
  14301. ==============================
  14302.  
  14303.    This chapter covers features of the GNU assembler that are specific
  14304. to the Xtensa architecture.  For details about the Xtensa instruction
  14305. set, please consult the `Xtensa Instruction Set Architecture (ISA)
  14306. Reference Manual'.
  14307.  
  14308. * Menu:
  14309.  
  14310. * Xtensa Options::              Command-line Options.
  14311. * Xtensa Syntax::               Assembler Syntax for Xtensa Processors.
  14312. * Xtensa Optimizations::        Assembler Optimizations.
  14313. * Xtensa Relaxation::           Other Automatic Transformations.
  14314. * Xtensa Directives::           Directives for Xtensa Processors.
  14315.  
  14316. 
  14317. File: as.info,  Node: Xtensa Options,  Next: Xtensa Syntax,  Up: Xtensa-Dependent
  14318.  
  14319. 8.34.1 Command Line Options
  14320. ---------------------------
  14321.  
  14322. The Xtensa version of the GNU assembler supports these special options:
  14323.  
  14324. `--text-section-literals | --no-text-section-literals'
  14325.      Control the treatment of literal pools.  The default is
  14326.      `--no-text-section-literals', which places literals in a separate
  14327.      section in the output file.  This allows the literal pool to be
  14328.      placed in a data RAM/ROM.  With `--text-section-literals', the
  14329.      literals are interspersed in the text section in order to keep
  14330.      them as close as possible to their references.  This may be
  14331.      necessary for large assembly files, where the literals would
  14332.      otherwise be out of range of the `L32R' instructions in the text
  14333.      section.  These options only affect literals referenced via
  14334.      PC-relative `L32R' instructions; literals for absolute mode `L32R'
  14335.      instructions are handled separately.
  14336.  
  14337. `--absolute-literals | --no-absolute-literals'
  14338.      Indicate to the assembler whether `L32R' instructions use absolute
  14339.      or PC-relative addressing.  If the processor includes the absolute
  14340.      addressing option, the default is to use absolute `L32R'
  14341.      relocations.  Otherwise, only the PC-relative `L32R' relocations
  14342.      can be used.
  14343.  
  14344. `--target-align | --no-target-align'
  14345.      Enable or disable automatic alignment to reduce branch penalties
  14346.      at some expense in code size.  *Note Automatic Instruction
  14347.      Alignment: Xtensa Automatic Alignment.  This optimization is
  14348.      enabled by default.  Note that the assembler will always align
  14349.      instructions like `LOOP' that have fixed alignment requirements.
  14350.  
  14351. `--longcalls | --no-longcalls'
  14352.      Enable or disable transformation of call instructions to allow
  14353.      calls across a greater range of addresses.  *Note Function Call
  14354.      Relaxation: Xtensa Call Relaxation.  This option should be used
  14355.      when call targets can potentially be out of range.  It may degrade
  14356.      both code size and performance, but the linker can generally
  14357.      optimize away the unnecessary overhead when a call ends up within
  14358.      range.  The default is `--no-longcalls'.
  14359.  
  14360. `--transform | --no-transform'
  14361.      Enable or disable all assembler transformations of Xtensa
  14362.      instructions, including both relaxation and optimization.  The
  14363.      default is `--transform'; `--no-transform' should only be used in
  14364.      the rare cases when the instructions must be exactly as specified
  14365.      in the assembly source.  Using `--no-transform' causes out of range
  14366.      instruction operands to be errors.
  14367.  
  14368. `--rename-section OLDNAME=NEWNAME'
  14369.      Rename the OLDNAME section to NEWNAME.  This option can be used
  14370.      multiple times to rename multiple sections.
  14371.  
  14372. 
  14373. File: as.info,  Node: Xtensa Syntax,  Next: Xtensa Optimizations,  Prev: Xtensa Options,  Up: Xtensa-Dependent
  14374.  
  14375. 8.34.2 Assembler Syntax
  14376. -----------------------
  14377.  
  14378. Block comments are delimited by `/*' and `*/'.  End of line comments
  14379. may be introduced with either `#' or `//'.
  14380.  
  14381.    Instructions consist of a leading opcode or macro name followed by
  14382. whitespace and an optional comma-separated list of operands:
  14383.  
  14384.      OPCODE [OPERAND, ...]
  14385.  
  14386.    Instructions must be separated by a newline or semicolon.
  14387.  
  14388.    FLIX instructions, which bundle multiple opcodes together in a single
  14389. instruction, are specified by enclosing the bundled opcodes inside
  14390. braces:
  14391.  
  14392.      {
  14393.      [FORMAT]
  14394.      OPCODE0 [OPERANDS]
  14395.      OPCODE1 [OPERANDS]
  14396.      OPCODE2 [OPERANDS]
  14397.      ...
  14398.      }
  14399.  
  14400.    The opcodes in a FLIX instruction are listed in the same order as the
  14401. corresponding instruction slots in the TIE format declaration.
  14402. Directives and labels are not allowed inside the braces of a FLIX
  14403. instruction.  A particular TIE format name can optionally be specified
  14404. immediately after the opening brace, but this is usually unnecessary.
  14405. The assembler will automatically search for a format that can encode the
  14406. specified opcodes, so the format name need only be specified in rare
  14407. cases where there is more than one applicable format and where it
  14408. matters which of those formats is used.  A FLIX instruction can also be
  14409. specified on a single line by separating the opcodes with semicolons:
  14410.  
  14411.      { [FORMAT;] OPCODE0 [OPERANDS]; OPCODE1 [OPERANDS]; OPCODE2 [OPERANDS]; ... }
  14412.  
  14413.    The assembler can automatically bundle opcodes into FLIX
  14414. instructions.  It encodes the opcodes in order, one at a time, choosing
  14415. the smallest format where each opcode can be encoded and filling unused
  14416. instruction slots with no-ops.
  14417.  
  14418. * Menu:
  14419.  
  14420. * Xtensa Opcodes::              Opcode Naming Conventions.
  14421. * Xtensa Registers::            Register Naming.
  14422.  
  14423. 
  14424. File: as.info,  Node: Xtensa Opcodes,  Next: Xtensa Registers,  Up: Xtensa Syntax
  14425.  
  14426. 8.34.2.1 Opcode Names
  14427. .....................
  14428.  
  14429. See the `Xtensa Instruction Set Architecture (ISA) Reference Manual'
  14430. for a complete list of opcodes and descriptions of their semantics.
  14431.  
  14432.    If an opcode name is prefixed with an underscore character (`_'),
  14433. `as' will not transform that instruction in any way.  The underscore
  14434. prefix disables both optimization (*note Xtensa Optimizations: Xtensa
  14435. Optimizations.) and relaxation (*note Xtensa Relaxation: Xtensa
  14436. Relaxation.) for that particular instruction.  Only use the underscore
  14437. prefix when it is essential to select the exact opcode produced by the
  14438. assembler.  Using this feature unnecessarily makes the code less
  14439. efficient by disabling assembler optimization and less flexible by
  14440. disabling relaxation.
  14441.  
  14442.    Note that this special handling of underscore prefixes only applies
  14443. to Xtensa opcodes, not to either built-in macros or user-defined macros.
  14444. When an underscore prefix is used with a macro (e.g., `_MOV'), it
  14445. refers to a different macro.  The assembler generally provides built-in
  14446. macros both with and without the underscore prefix, where the underscore
  14447. versions behave as if the underscore carries through to the instructions
  14448. in the macros.  For example, `_MOV' may expand to `_MOV.N'.
  14449.  
  14450.    The underscore prefix only applies to individual instructions, not to
  14451. series of instructions.  For example, if a series of instructions have
  14452. underscore prefixes, the assembler will not transform the individual
  14453. instructions, but it may insert other instructions between them (e.g.,
  14454. to align a `LOOP' instruction).  To prevent the assembler from
  14455. modifying a series of instructions as a whole, use the `no-transform'
  14456. directive.  *Note transform: Transform Directive.
  14457.  
  14458. 
  14459. File: as.info,  Node: Xtensa Registers,  Prev: Xtensa Opcodes,  Up: Xtensa Syntax
  14460.  
  14461. 8.34.2.2 Register Names
  14462. .......................
  14463.  
  14464. The assembly syntax for a register file entry is the "short" name for a
  14465. TIE register file followed by the index into that register file.  For
  14466. example, the general-purpose `AR' register file has a short name of
  14467. `a', so these registers are named `a0'...`a15'.  As a special feature,
  14468. `sp' is also supported as a synonym for `a1'.  Additional registers may
  14469. be added by processor configuration options and by designer-defined TIE
  14470. extensions.  An initial `$' character is optional in all register names.
  14471.  
  14472. 
  14473. File: as.info,  Node: Xtensa Optimizations,  Next: Xtensa Relaxation,  Prev: Xtensa Syntax,  Up: Xtensa-Dependent
  14474.  
  14475. 8.34.3 Xtensa Optimizations
  14476. ---------------------------
  14477.  
  14478. The optimizations currently supported by `as' are generation of density
  14479. instructions where appropriate and automatic branch target alignment.
  14480.  
  14481. * Menu:
  14482.  
  14483. * Density Instructions::        Using Density Instructions.
  14484. * Xtensa Automatic Alignment::  Automatic Instruction Alignment.
  14485.  
  14486. 
  14487. File: as.info,  Node: Density Instructions,  Next: Xtensa Automatic Alignment,  Up: Xtensa Optimizations
  14488.  
  14489. 8.34.3.1 Using Density Instructions
  14490. ...................................
  14491.  
  14492. The Xtensa instruction set has a code density option that provides
  14493. 16-bit versions of some of the most commonly used opcodes.  Use of these
  14494. opcodes can significantly reduce code size.  When possible, the
  14495. assembler automatically translates instructions from the core Xtensa
  14496. instruction set into equivalent instructions from the Xtensa code
  14497. density option.  This translation can be disabled by using underscore
  14498. prefixes (*note Opcode Names: Xtensa Opcodes.), by using the
  14499. `--no-transform' command-line option (*note Command Line Options:
  14500. Xtensa Options.), or by using the `no-transform' directive (*note
  14501. transform: Transform Directive.).
  14502.  
  14503.    It is a good idea _not_ to use the density instructions directly.
  14504. The assembler will automatically select dense instructions where
  14505. possible.  If you later need to use an Xtensa processor without the code
  14506. density option, the same assembly code will then work without
  14507. modification.
  14508.  
  14509. 
  14510. File: as.info,  Node: Xtensa Automatic Alignment,  Prev: Density Instructions,  Up: Xtensa Optimizations
  14511.  
  14512. 8.34.3.2 Automatic Instruction Alignment
  14513. ........................................
  14514.  
  14515. The Xtensa assembler will automatically align certain instructions, both
  14516. to optimize performance and to satisfy architectural requirements.
  14517.  
  14518.    As an optimization to improve performance, the assembler attempts to
  14519. align branch targets so they do not cross instruction fetch boundaries.
  14520. (Xtensa processors can be configured with either 32-bit or 64-bit
  14521. instruction fetch widths.)  An instruction immediately following a call
  14522. is treated as a branch target in this context, because it will be the
  14523. target of a return from the call.  This alignment has the potential to
  14524. reduce branch penalties at some expense in code size.  The assembler
  14525. will not attempt to align labels with the prefixes `.Ln' and `.LM',
  14526. since these labels are used for debugging information and are not
  14527. typically branch targets.  This optimization is enabled by default.
  14528. You can disable it with the `--no-target-align' command-line option
  14529. (*note Command Line Options: Xtensa Options.).
  14530.  
  14531.    The target alignment optimization is done without adding instructions
  14532. that could increase the execution time of the program.  If there are
  14533. density instructions in the code preceding a target, the assembler can
  14534. change the target alignment by widening some of those instructions to
  14535. the equivalent 24-bit instructions.  Extra bytes of padding can be
  14536. inserted immediately following unconditional jump and return
  14537. instructions.  This approach is usually successful in aligning many,
  14538. but not all, branch targets.
  14539.  
  14540.    The `LOOP' family of instructions must be aligned such that the
  14541. first instruction in the loop body does not cross an instruction fetch
  14542. boundary (e.g., with a 32-bit fetch width, a `LOOP' instruction must be
  14543. on either a 1 or 2 mod 4 byte boundary).  The assembler knows about
  14544. this restriction and inserts the minimal number of 2 or 3 byte no-op
  14545. instructions to satisfy it.  When no-op instructions are added, any
  14546. label immediately preceding the original loop will be moved in order to
  14547. refer to the loop instruction, not the newly generated no-op
  14548. instruction.  To preserve binary compatibility across processors with
  14549. different fetch widths, the assembler conservatively assumes a 32-bit
  14550. fetch width when aligning `LOOP' instructions (except if the first
  14551. instruction in the loop is a 64-bit instruction).
  14552.  
  14553.    Similarly, the `ENTRY' instruction must be aligned on a 0 mod 4 byte
  14554. boundary.  The assembler satisfies this requirement by inserting zero
  14555. bytes when required.  In addition, labels immediately preceding the
  14556. `ENTRY' instruction will be moved to the newly aligned instruction
  14557. location.
  14558.  
  14559. 
  14560. File: as.info,  Node: Xtensa Relaxation,  Next: Xtensa Directives,  Prev: Xtensa Optimizations,  Up: Xtensa-Dependent
  14561.  
  14562. 8.34.4 Xtensa Relaxation
  14563. ------------------------
  14564.  
  14565. When an instruction operand is outside the range allowed for that
  14566. particular instruction field, `as' can transform the code to use a
  14567. functionally-equivalent instruction or sequence of instructions.  This
  14568. process is known as "relaxation".  This is typically done for branch
  14569. instructions because the distance of the branch targets is not known
  14570. until assembly-time.  The Xtensa assembler offers branch relaxation and
  14571. also extends this concept to function calls, `MOVI' instructions and
  14572. other instructions with immediate fields.
  14573.  
  14574. * Menu:
  14575.  
  14576. * Xtensa Branch Relaxation::        Relaxation of Branches.
  14577. * Xtensa Call Relaxation::          Relaxation of Function Calls.
  14578. * Xtensa Immediate Relaxation::     Relaxation of other Immediate Fields.
  14579.  
  14580. 
  14581. File: as.info,  Node: Xtensa Branch Relaxation,  Next: Xtensa Call Relaxation,  Up: Xtensa Relaxation
  14582.  
  14583. 8.34.4.1 Conditional Branch Relaxation
  14584. ......................................
  14585.  
  14586. When the target of a branch is too far away from the branch itself,
  14587. i.e., when the offset from the branch to the target is too large to fit
  14588. in the immediate field of the branch instruction, it may be necessary to
  14589. replace the branch with a branch around a jump.  For example,
  14590.  
  14591.          beqz    a2, L
  14592.  
  14593.    may result in:
  14594.  
  14595.          bnez.n  a2, M
  14596.          j L
  14597.      M:
  14598.  
  14599.    (The `BNEZ.N' instruction would be used in this example only if the
  14600. density option is available.  Otherwise, `BNEZ' would be used.)
  14601.  
  14602.    This relaxation works well because the unconditional jump instruction
  14603. has a much larger offset range than the various conditional branches.
  14604. However, an error will occur if a branch target is beyond the range of a
  14605. jump instruction.  `as' cannot relax unconditional jumps.  Similarly,
  14606. an error will occur if the original input contains an unconditional
  14607. jump to a target that is out of range.
  14608.  
  14609.    Branch relaxation is enabled by default.  It can be disabled by using
  14610. underscore prefixes (*note Opcode Names: Xtensa Opcodes.), the
  14611. `--no-transform' command-line option (*note Command Line Options:
  14612. Xtensa Options.), or the `no-transform' directive (*note transform:
  14613. Transform Directive.).
  14614.  
  14615. 
  14616. File: as.info,  Node: Xtensa Call Relaxation,  Next: Xtensa Immediate Relaxation,  Prev: Xtensa Branch Relaxation,  Up: Xtensa Relaxation
  14617.  
  14618. 8.34.4.2 Function Call Relaxation
  14619. .................................
  14620.  
  14621. Function calls may require relaxation because the Xtensa immediate call
  14622. instructions (`CALL0', `CALL4', `CALL8' and `CALL12') provide a
  14623. PC-relative offset of only 512 Kbytes in either direction.  For larger
  14624. programs, it may be necessary to use indirect calls (`CALLX0',
  14625. `CALLX4', `CALLX8' and `CALLX12') where the target address is specified
  14626. in a register.  The Xtensa assembler can automatically relax immediate
  14627. call instructions into indirect call instructions.  This relaxation is
  14628. done by loading the address of the called function into the callee's
  14629. return address register and then using a `CALLX' instruction.  So, for
  14630. example:
  14631.  
  14632.          call8 func
  14633.  
  14634.    might be relaxed to:
  14635.  
  14636.          .literal .L1, func
  14637.          l32r    a8, .L1
  14638.          callx8  a8
  14639.  
  14640.    Because the addresses of targets of function calls are not generally
  14641. known until link-time, the assembler must assume the worst and relax all
  14642. the calls to functions in other source files, not just those that really
  14643. will be out of range.  The linker can recognize calls that were
  14644. unnecessarily relaxed, and it will remove the overhead introduced by the
  14645. assembler for those cases where direct calls are sufficient.
  14646.  
  14647.    Call relaxation is disabled by default because it can have a negative
  14648. effect on both code size and performance, although the linker can
  14649. usually eliminate the unnecessary overhead.  If a program is too large
  14650. and some of the calls are out of range, function call relaxation can be
  14651. enabled using the `--longcalls' command-line option or the `longcalls'
  14652. directive (*note longcalls: Longcalls Directive.).
  14653.  
  14654. 
  14655. File: as.info,  Node: Xtensa Immediate Relaxation,  Prev: Xtensa Call Relaxation,  Up: Xtensa Relaxation
  14656.  
  14657. 8.34.4.3 Other Immediate Field Relaxation
  14658. .........................................
  14659.  
  14660. The assembler normally performs the following other relaxations.  They
  14661. can be disabled by using underscore prefixes (*note Opcode Names:
  14662. Xtensa Opcodes.), the `--no-transform' command-line option (*note
  14663. Command Line Options: Xtensa Options.), or the `no-transform' directive
  14664. (*note transform: Transform Directive.).
  14665.  
  14666.    The `MOVI' machine instruction can only materialize values in the
  14667. range from -2048 to 2047.  Values outside this range are best
  14668. materialized with `L32R' instructions.  Thus:
  14669.  
  14670.          movi a0, 100000
  14671.  
  14672.    is assembled into the following machine code:
  14673.  
  14674.          .literal .L1, 100000
  14675.          l32r a0, .L1
  14676.  
  14677.    The `L8UI' machine instruction can only be used with immediate
  14678. offsets in the range from 0 to 255. The `L16SI' and `L16UI' machine
  14679. instructions can only be used with offsets from 0 to 510.  The `L32I'
  14680. machine instruction can only be used with offsets from 0 to 1020.  A
  14681. load offset outside these ranges can be materalized with an `L32R'
  14682. instruction if the destination register of the load is different than
  14683. the source address register.  For example:
  14684.  
  14685.          l32i a1, a0, 2040
  14686.  
  14687.    is translated to:
  14688.  
  14689.          .literal .L1, 2040
  14690.          l32r a1, .L1
  14691.          addi a1, a0, a1
  14692.          l32i a1, a1, 0
  14693.  
  14694. If the load destination and source address register are the same, an
  14695. out-of-range offset causes an error.
  14696.  
  14697.    The Xtensa `ADDI' instruction only allows immediate operands in the
  14698. range from -128 to 127.  There are a number of alternate instruction
  14699. sequences for the `ADDI' operation.  First, if the immediate is 0, the
  14700. `ADDI' will be turned into a `MOV.N' instruction (or the equivalent
  14701. `OR' instruction if the code density option is not available).  If the
  14702. `ADDI' immediate is outside of the range -128 to 127, but inside the
  14703. range -32896 to 32639, an `ADDMI' instruction or `ADDMI'/`ADDI'
  14704. sequence will be used.  Finally, if the immediate is outside of this
  14705. range and a free register is available, an `L32R'/`ADD' sequence will
  14706. be used with a literal allocated from the literal pool.
  14707.  
  14708.    For example:
  14709.  
  14710.          addi    a5, a6, 0
  14711.          addi    a5, a6, 512
  14712.          addi    a5, a6, 513
  14713.          addi    a5, a6, 50000
  14714.  
  14715.    is assembled into the following:
  14716.  
  14717.          .literal .L1, 50000
  14718.          mov.n   a5, a6
  14719.          addmi   a5, a6, 0x200
  14720.          addmi   a5, a6, 0x200
  14721.          addi    a5, a5, 1
  14722.          l32r    a5, .L1
  14723.          add     a5, a6, a5
  14724.  
  14725. 
  14726. File: as.info,  Node: Xtensa Directives,  Prev: Xtensa Relaxation,  Up: Xtensa-Dependent
  14727.  
  14728. 8.34.5 Directives
  14729. -----------------
  14730.  
  14731. The Xtensa assember supports a region-based directive syntax:
  14732.  
  14733.          .begin DIRECTIVE [OPTIONS]
  14734.          ...
  14735.          .end DIRECTIVE
  14736.  
  14737.    All the Xtensa-specific directives that apply to a region of code use
  14738. this syntax.
  14739.  
  14740.    The directive applies to code between the `.begin' and the `.end'.
  14741. The state of the option after the `.end' reverts to what it was before
  14742. the `.begin'.  A nested `.begin'/`.end' region can further change the
  14743. state of the directive without having to be aware of its outer state.
  14744. For example, consider:
  14745.  
  14746.          .begin no-transform
  14747.      L:  add a0, a1, a2
  14748.          .begin transform
  14749.      M:  add a0, a1, a2
  14750.          .end transform
  14751.      N:  add a0, a1, a2
  14752.          .end no-transform
  14753.  
  14754.    The `ADD' opcodes at `L' and `N' in the outer `no-transform' region
  14755. both result in `ADD' machine instructions, but the assembler selects an
  14756. `ADD.N' instruction for the `ADD' at `M' in the inner `transform'
  14757. region.
  14758.  
  14759.    The advantage of this style is that it works well inside macros
  14760. which can preserve the context of their callers.
  14761.  
  14762.    The following directives are available:
  14763.  
  14764. * Menu:
  14765.  
  14766. * Schedule Directive::         Enable instruction scheduling.
  14767. * Longcalls Directive::        Use Indirect Calls for Greater Range.
  14768. * Transform Directive::        Disable All Assembler Transformations.
  14769. * Literal Directive::          Intermix Literals with Instructions.
  14770. * Literal Position Directive:: Specify Inline Literal Pool Locations.
  14771. * Literal Prefix Directive::   Specify Literal Section Name Prefix.
  14772. * Absolute Literals Directive:: Control PC-Relative vs. Absolute Literals.
  14773.  
  14774. 
  14775. File: as.info,  Node: Schedule Directive,  Next: Longcalls Directive,  Up: Xtensa Directives
  14776.  
  14777. 8.34.5.1 schedule
  14778. .................
  14779.  
  14780. The `schedule' directive is recognized only for compatibility with
  14781. Tensilica's assembler.
  14782.  
  14783.          .begin [no-]schedule
  14784.          .end [no-]schedule
  14785.  
  14786.    This directive is ignored and has no effect on `as'.
  14787.  
  14788. 
  14789. File: as.info,  Node: Longcalls Directive,  Next: Transform Directive,  Prev: Schedule Directive,  Up: Xtensa Directives
  14790.  
  14791. 8.34.5.2 longcalls
  14792. ..................
  14793.  
  14794. The `longcalls' directive enables or disables function call relaxation.
  14795. *Note Function Call Relaxation: Xtensa Call Relaxation.
  14796.  
  14797.          .begin [no-]longcalls
  14798.          .end [no-]longcalls
  14799.  
  14800.    Call relaxation is disabled by default unless the `--longcalls'
  14801. command-line option is specified.  The `longcalls' directive overrides
  14802. the default determined by the command-line options.
  14803.  
  14804. 
  14805. File: as.info,  Node: Transform Directive,  Next: Literal Directive,  Prev: Longcalls Directive,  Up: Xtensa Directives
  14806.  
  14807. 8.34.5.3 transform
  14808. ..................
  14809.  
  14810. This directive enables or disables all assembler transformation,
  14811. including relaxation (*note Xtensa Relaxation: Xtensa Relaxation.) and
  14812. optimization (*note Xtensa Optimizations: Xtensa Optimizations.).
  14813.  
  14814.          .begin [no-]transform
  14815.          .end [no-]transform
  14816.  
  14817.    Transformations are enabled by default unless the `--no-transform'
  14818. option is used.  The `transform' directive overrides the default
  14819. determined by the command-line options.  An underscore opcode prefix,
  14820. disabling transformation of that opcode, always takes precedence over
  14821. both directives and command-line flags.
  14822.  
  14823. 
  14824. File: as.info,  Node: Literal Directive,  Next: Literal Position Directive,  Prev: Transform Directive,  Up: Xtensa Directives
  14825.  
  14826. 8.34.5.4 literal
  14827. ................
  14828.  
  14829. The `.literal' directive is used to define literal pool data, i.e.,
  14830. read-only 32-bit data accessed via `L32R' instructions.
  14831.  
  14832.          .literal LABEL, VALUE[, VALUE...]
  14833.  
  14834.    This directive is similar to the standard `.word' directive, except
  14835. that the actual location of the literal data is determined by the
  14836. assembler and linker, not by the position of the `.literal' directive.
  14837. Using this directive gives the assembler freedom to locate the literal
  14838. data in the most appropriate place and possibly to combine identical
  14839. literals.  For example, the code:
  14840.  
  14841.          entry sp, 40
  14842.          .literal .L1, sym
  14843.          l32r    a4, .L1
  14844.  
  14845.    can be used to load a pointer to the symbol `sym' into register
  14846. `a4'.  The value of `sym' will not be placed between the `ENTRY' and
  14847. `L32R' instructions; instead, the assembler puts the data in a literal
  14848. pool.
  14849.  
  14850.    Literal pools for absolute mode `L32R' instructions (*note Absolute
  14851. Literals Directive::) are placed in a seperate `.lit4' section.  By
  14852. default literal pools for PC-relative mode `L32R' instructions are
  14853. placed in a separate `.literal' section; however, when using the
  14854. `--text-section-literals' option (*note Command Line Options: Xtensa
  14855. Options.), the literal pools are placed in the current section.  These
  14856. text section literal pools are created automatically before `ENTRY'
  14857. instructions and manually after `.literal_position' directives (*note
  14858. literal_position: Literal Position Directive.).  If there are no
  14859. preceding `ENTRY' instructions, explicit `.literal_position' directives
  14860. must be used to place the text section literal pools; otherwise, `as'
  14861. will report an error.
  14862.  
  14863. 
  14864. File: as.info,  Node: Literal Position Directive,  Next: Literal Prefix Directive,  Prev: Literal Directive,  Up: Xtensa Directives
  14865.  
  14866. 8.34.5.5 literal_position
  14867. .........................
  14868.  
  14869. When using `--text-section-literals' to place literals inline in the
  14870. section being assembled, the `.literal_position' directive can be used
  14871. to mark a potential location for a literal pool.
  14872.  
  14873.          .literal_position
  14874.  
  14875.    The `.literal_position' directive is ignored when the
  14876. `--text-section-literals' option is not used or when `L32R'
  14877. instructions use the absolute addressing mode.
  14878.  
  14879.    The assembler will automatically place text section literal pools
  14880. before `ENTRY' instructions, so the `.literal_position' directive is
  14881. only needed to specify some other location for a literal pool.  You may
  14882. need to add an explicit jump instruction to skip over an inline literal
  14883. pool.
  14884.  
  14885.    For example, an interrupt vector does not begin with an `ENTRY'
  14886. instruction so the assembler will be unable to automatically find a good
  14887. place to put a literal pool.  Moreover, the code for the interrupt
  14888. vector must be at a specific starting address, so the literal pool
  14889. cannot come before the start of the code.  The literal pool for the
  14890. vector must be explicitly positioned in the middle of the vector (before
  14891. any uses of the literals, due to the negative offsets used by
  14892. PC-relative `L32R' instructions).  The `.literal_position' directive
  14893. can be used to do this.  In the following code, the literal for `M'
  14894. will automatically be aligned correctly and is placed after the
  14895. unconditional jump.
  14896.  
  14897.          .global M
  14898.      code_start:
  14899.          j continue
  14900.          .literal_position
  14901.          .align 4
  14902.      continue:
  14903.          movi    a4, M
  14904.  
  14905. 
  14906. File: as.info,  Node: Literal Prefix Directive,  Next: Absolute Literals Directive,  Prev: Literal Position Directive,  Up: Xtensa Directives
  14907.  
  14908. 8.34.5.6 literal_prefix
  14909. .......................
  14910.  
  14911. The `literal_prefix' directive allows you to specify different sections
  14912. to hold literals from different portions of an assembly file.  With
  14913. this directive, a single assembly file can be used to generate code
  14914. into multiple sections, including literals generated by the assembler.
  14915.  
  14916.          .begin literal_prefix [NAME]
  14917.          .end literal_prefix
  14918.  
  14919.    By default the assembler places literal pools in sections separate
  14920. from the instructions, using the default literal section names of
  14921. `.literal' for PC-relative mode `L32R' instructions and `.lit4' for
  14922. absolute mode `L32R' instructions (*note Absolute Literals
  14923. Directive::).  The `literal_prefix' directive causes different literal
  14924. sections to be used for the code inside the delimited region.  The new
  14925. literal sections are determined by including NAME as a prefix to the
  14926. default literal section names.  If the NAME argument is omitted, the
  14927. literal sections revert to the defaults.  This directive has no effect
  14928. when using the `--text-section-literals' option (*note Command Line
  14929. Options: Xtensa Options.).
  14930.  
  14931.    Except for two special cases, the assembler determines the new
  14932. literal sections by simply prepending NAME to the default section names,
  14933. resulting in `NAME.literal' and `NAME.lit4' sections.  The
  14934. `literal_prefix' directive is often used with the name of the current
  14935. text section as the prefix argument.  To facilitate this usage, the
  14936. assembler uses special case rules when it recognizes NAME as a text
  14937. section name.  First, if NAME ends with `.text', that suffix is not
  14938. included in the literal section name.  For example, if NAME is
  14939. `.iram0.text', then the literal sections will be `.iram0.literal' and
  14940. `.iram0.lit4'.  Second, if NAME begins with `.gnu.linkonce.t.', then
  14941. the literal section names are formed by replacing the `.t' substring
  14942. with `.literal' and `.lit4'.  For example, if NAME is
  14943. `.gnu.linkonce.t.func', the literal sections will be
  14944. `.gnu.linkonce.literal.func' and `.gnu.linkonce.lit4.func'.
  14945.  
  14946. 
  14947. File: as.info,  Node: Absolute Literals Directive,  Prev: Literal Prefix Directive,  Up: Xtensa Directives
  14948.  
  14949. 8.34.5.7 absolute-literals
  14950. ..........................
  14951.  
  14952. The `absolute-literals' and `no-absolute-literals' directives control
  14953. the absolute vs. PC-relative mode for `L32R' instructions.  These are
  14954. relevant only for Xtensa configurations that include the absolute
  14955. addressing option for `L32R' instructions.
  14956.  
  14957.          .begin [no-]absolute-literals
  14958.          .end [no-]absolute-literals
  14959.  
  14960.    These directives do not change the `L32R' mode--they only cause the
  14961. assembler to emit the appropriate kind of relocation for `L32R'
  14962. instructions and to place the literal values in the appropriate section.
  14963. To change the `L32R' mode, the program must write the `LITBASE' special
  14964. register.  It is the programmer's responsibility to keep track of the
  14965. mode and indicate to the assembler which mode is used in each region of
  14966. code.
  14967.  
  14968.    If the Xtensa configuration includes the absolute `L32R' addressing
  14969. option, the default is to assume absolute `L32R' addressing unless the
  14970. `--no-absolute-literals' command-line option is specified.  Otherwise,
  14971. the default is to assume PC-relative `L32R' addressing.  The
  14972. `absolute-literals' directive can then be used to override the default
  14973. determined by the command-line options.
  14974.  
  14975. 
  14976. File: as.info,  Node: Reporting Bugs,  Next: Acknowledgements,  Prev: Machine Dependencies,  Up: Top
  14977.  
  14978. 9 Reporting Bugs
  14979. ****************
  14980.  
  14981. Your bug reports play an essential role in making `as' reliable.
  14982.  
  14983.    Reporting a bug may help you by bringing a solution to your problem,
  14984. or it may not.  But in any case the principal function of a bug report
  14985. is to help the entire community by making the next version of `as' work
  14986. better.  Bug reports are your contribution to the maintenance of `as'.
  14987.  
  14988.    In order for a bug report to serve its purpose, you must include the
  14989. information that enables us to fix the bug.
  14990.  
  14991. * Menu:
  14992.  
  14993. * Bug Criteria::                Have you found a bug?
  14994. * Bug Reporting::               How to report bugs
  14995.  
  14996. 
  14997. File: as.info,  Node: Bug Criteria,  Next: Bug Reporting,  Up: Reporting Bugs
  14998.  
  14999. 9.1 Have You Found a Bug?
  15000. =========================
  15001.  
  15002. If you are not sure whether you have found a bug, here are some
  15003. guidelines:
  15004.  
  15005.    * If the assembler gets a fatal signal, for any input whatever, that
  15006.      is a `as' bug.  Reliable assemblers never crash.
  15007.  
  15008.    * If `as' produces an error message for valid input, that is a bug.
  15009.  
  15010.    * If `as' does not produce an error message for invalid input, that
  15011.      is a bug.  However, you should note that your idea of "invalid
  15012.      input" might be our idea of "an extension" or "support for
  15013.      traditional practice".
  15014.  
  15015.    * If you are an experienced user of assemblers, your suggestions for
  15016.      improvement of `as' are welcome in any case.
  15017.  
  15018. 
  15019. File: as.info,  Node: Bug Reporting,  Prev: Bug Criteria,  Up: Reporting Bugs
  15020.  
  15021. 9.2 How to Report Bugs
  15022. ======================
  15023.  
  15024. A number of companies and individuals offer support for GNU products.
  15025. If you obtained `as' from a support organization, we recommend you
  15026. contact that organization first.
  15027.  
  15028.    You can find contact information for many support companies and
  15029. individuals in the file `etc/SERVICE' in the GNU Emacs distribution.
  15030.  
  15031.    In any event, we also recommend that you send bug reports for `as'
  15032. to `bug-binutils@gnu.org'.
  15033.  
  15034.    The fundamental principle of reporting bugs usefully is this:
  15035. *report all the facts*.  If you are not sure whether to state a fact or
  15036. leave it out, state it!
  15037.  
  15038.    Often people omit facts because they think they know what causes the
  15039. problem and assume that some details do not matter.  Thus, you might
  15040. assume that the name of a symbol you use in an example does not matter.
  15041. Well, probably it does not, but one cannot be sure.  Perhaps the bug
  15042. is a stray memory reference which happens to fetch from the location
  15043. where that name is stored in memory; perhaps, if the name were
  15044. different, the contents of that location would fool the assembler into
  15045. doing the right thing despite the bug.  Play it safe and give a
  15046. specific, complete example.  That is the easiest thing for you to do,
  15047. and the most helpful.
  15048.  
  15049.    Keep in mind that the purpose of a bug report is to enable us to fix
  15050. the bug if it is new to us.  Therefore, always write your bug reports
  15051. on the assumption that the bug has not been reported previously.
  15052.  
  15053.    Sometimes people give a few sketchy facts and ask, "Does this ring a
  15054. bell?"  This cannot help us fix a bug, so it is basically useless.  We
  15055. respond by asking for enough details to enable us to investigate.  You
  15056. might as well expedite matters by sending them to begin with.
  15057.  
  15058.    To enable us to fix the bug, you should include all these things:
  15059.  
  15060.    * The version of `as'.  `as' announces it if you start it with the
  15061.      `--version' argument.
  15062.  
  15063.      Without this, we will not know whether there is any point in
  15064.      looking for the bug in the current version of `as'.
  15065.  
  15066.    * Any patches you may have applied to the `as' source.
  15067.  
  15068.    * The type of machine you are using, and the operating system name
  15069.      and version number.
  15070.  
  15071.    * What compiler (and its version) was used to compile `as'--e.g.
  15072.      "`gcc-2.7'".
  15073.  
  15074.    * The command arguments you gave the assembler to assemble your
  15075.      example and observe the bug.  To guarantee you will not omit
  15076.      something important, list them all.  A copy of the Makefile (or
  15077.      the output from make) is sufficient.
  15078.  
  15079.      If we were to try to guess the arguments, we would probably guess
  15080.      wrong and then we might not encounter the bug.
  15081.  
  15082.    * A complete input file that will reproduce the bug.  If the bug is
  15083.      observed when the assembler is invoked via a compiler, send the
  15084.      assembler source, not the high level language source.  Most
  15085.      compilers will produce the assembler source when run with the `-S'
  15086.      option.  If you are using `gcc', use the options `-v
  15087.      --save-temps'; this will save the assembler source in a file with
  15088.      an extension of `.s', and also show you exactly how `as' is being
  15089.      run.
  15090.  
  15091.    * A description of what behavior you observe that you believe is
  15092.      incorrect.  For example, "It gets a fatal signal."
  15093.  
  15094.      Of course, if the bug is that `as' gets a fatal signal, then we
  15095.      will certainly notice it.  But if the bug is incorrect output, we
  15096.      might not notice unless it is glaringly wrong.  You might as well
  15097.      not give us a chance to make a mistake.
  15098.  
  15099.      Even if the problem you experience is a fatal signal, you should
  15100.      still say so explicitly.  Suppose something strange is going on,
  15101.      such as, your copy of `as' is out of synch, or you have
  15102.      encountered a bug in the C library on your system.  (This has
  15103.      happened!)  Your copy might crash and ours would not.  If you told
  15104.      us to expect a crash, then when ours fails to crash, we would know
  15105.      that the bug was not happening for us.  If you had not told us to
  15106.      expect a crash, then we would not be able to draw any conclusion
  15107.      from our observations.
  15108.  
  15109.    * If you wish to suggest changes to the `as' source, send us context
  15110.      diffs, as generated by `diff' with the `-u', `-c', or `-p' option.
  15111.      Always send diffs from the old file to the new file.  If you even
  15112.      discuss something in the `as' source, refer to it by context, not
  15113.      by line number.
  15114.  
  15115.      The line numbers in our development sources will not match those
  15116.      in your sources.  Your line numbers would convey no useful
  15117.      information to us.
  15118.  
  15119.    Here are some things that are not necessary:
  15120.  
  15121.    * A description of the envelope of the bug.
  15122.  
  15123.      Often people who encounter a bug spend a lot of time investigating
  15124.      which changes to the input file will make the bug go away and which
  15125.      changes will not affect it.
  15126.  
  15127.      This is often time consuming and not very useful, because the way
  15128.      we will find the bug is by running a single example under the
  15129.      debugger with breakpoints, not by pure deduction from a series of
  15130.      examples.  We recommend that you save your time for something else.
  15131.  
  15132.      Of course, if you can find a simpler example to report _instead_
  15133.      of the original one, that is a convenience for us.  Errors in the
  15134.      output will be easier to spot, running under the debugger will take
  15135.      less time, and so on.
  15136.  
  15137.      However, simplification is not vital; if you do not want to do
  15138.      this, report the bug anyway and send us the entire test case you
  15139.      used.
  15140.  
  15141.    * A patch for the bug.
  15142.  
  15143.      A patch for the bug does help us if it is a good one.  But do not
  15144.      omit the necessary information, such as the test case, on the
  15145.      assumption that a patch is all we need.  We might see problems
  15146.      with your patch and decide to fix the problem another way, or we
  15147.      might not understand it at all.
  15148.  
  15149.      Sometimes with a program as complicated as `as' it is very hard to
  15150.      construct an example that will make the program follow a certain
  15151.      path through the code.  If you do not send us the example, we will
  15152.      not be able to construct one, so we will not be able to verify
  15153.      that the bug is fixed.
  15154.  
  15155.      And if we cannot understand what bug you are trying to fix, or why
  15156.      your patch should be an improvement, we will not install it.  A
  15157.      test case will help us to understand.
  15158.  
  15159.    * A guess about what the bug is or what it depends on.
  15160.  
  15161.      Such guesses are usually wrong.  Even we cannot guess right about
  15162.      such things without first using the debugger to find the facts.
  15163.  
  15164. 
  15165. File: as.info,  Node: Acknowledgements,  Next: GNU Free Documentation License,  Prev: Reporting Bugs,  Up: Top
  15166.  
  15167. 10 Acknowledgements
  15168. *******************
  15169.  
  15170. If you have contributed to GAS and your name isn't listed here, it is
  15171. not meant as a slight.  We just don't know about it.  Send mail to the
  15172. maintainer, and we'll correct the situation.  Currently the maintainer
  15173. is Ken Raeburn (email address `raeburn@cygnus.com').
  15174.  
  15175.    Dean Elsner wrote the original GNU assembler for the VAX.(1)
  15176.  
  15177.    Jay Fenlason maintained GAS for a while, adding support for
  15178. GDB-specific debug information and the 68k series machines, most of the
  15179. preprocessing pass, and extensive changes in `messages.c',
  15180. `input-file.c', `write.c'.
  15181.  
  15182.    K. Richard Pixley maintained GAS for a while, adding various
  15183. enhancements and many bug fixes, including merging support for several
  15184. processors, breaking GAS up to handle multiple object file format back
  15185. ends (including heavy rewrite, testing, an integration of the coff and
  15186. b.out back ends), adding configuration including heavy testing and
  15187. verification of cross assemblers and file splits and renaming,
  15188. converted GAS to strictly ANSI C including full prototypes, added
  15189. support for m680[34]0 and cpu32, did considerable work on i960
  15190. including a COFF port (including considerable amounts of reverse
  15191. engineering), a SPARC opcode file rewrite, DECstation, rs6000, and
  15192. hp300hpux host ports, updated "know" assertions and made them work,
  15193. much other reorganization, cleanup, and lint.
  15194.  
  15195.    Ken Raeburn wrote the high-level BFD interface code to replace most
  15196. of the code in format-specific I/O modules.
  15197.  
  15198.    The original VMS support was contributed by David L. Kashtan.  Eric
  15199. Youngdale has done much work with it since.
  15200.  
  15201.    The Intel 80386 machine description was written by Eliot Dresselhaus.
  15202.  
  15203.    Minh Tran-Le at IntelliCorp contributed some AIX 386 support.
  15204.  
  15205.    The Motorola 88k machine description was contributed by Devon Bowen
  15206. of Buffalo University and Torbjorn Granlund of the Swedish Institute of
  15207. Computer Science.
  15208.  
  15209.    Keith Knowles at the Open Software Foundation wrote the original
  15210. MIPS back end (`tc-mips.c', `tc-mips.h'), and contributed Rose format
  15211. support (which hasn't been merged in yet).  Ralph Campbell worked with
  15212. the MIPS code to support a.out format.
  15213.  
  15214.    Support for the Zilog Z8k and Renesas H8/300 and H8/500 processors
  15215. (tc-z8k, tc-h8300, tc-h8500), and IEEE 695 object file format
  15216. (obj-ieee), was written by Steve Chamberlain of Cygnus Support.  Steve
  15217. also modified the COFF back end to use BFD for some low-level
  15218. operations, for use with the H8/300 and AMD 29k targets.
  15219.  
  15220.    John Gilmore built the AMD 29000 support, added `.include' support,
  15221. and simplified the configuration of which versions accept which
  15222. directives.  He updated the 68k machine description so that Motorola's
  15223. opcodes always produced fixed-size instructions (e.g., `jsr'), while
  15224. synthetic instructions remained shrinkable (`jbsr').  John fixed many
  15225. bugs, including true tested cross-compilation support, and one bug in
  15226. relaxation that took a week and required the proverbial one-bit fix.
  15227.  
  15228.    Ian Lance Taylor of Cygnus Support merged the Motorola and MIT
  15229. syntax for the 68k, completed support for some COFF targets (68k, i386
  15230. SVR3, and SCO Unix), added support for MIPS ECOFF and ELF targets,
  15231. wrote the initial RS/6000 and PowerPC assembler, and made a few other
  15232. minor patches.
  15233.  
  15234.    Steve Chamberlain made GAS able to generate listings.
  15235.  
  15236.    Hewlett-Packard contributed support for the HP9000/300.
  15237.  
  15238.    Jeff Law wrote GAS and BFD support for the native HPPA object format
  15239. (SOM) along with a fairly extensive HPPA testsuite (for both SOM and
  15240. ELF object formats).  This work was supported by both the Center for
  15241. Software Science at the University of Utah and Cygnus Support.
  15242.  
  15243.    Support for ELF format files has been worked on by Mark Eichin of
  15244. Cygnus Support (original, incomplete implementation for SPARC), Pete
  15245. Hoogenboom and Jeff Law at the University of Utah (HPPA mainly),
  15246. Michael Meissner of the Open Software Foundation (i386 mainly), and Ken
  15247. Raeburn of Cygnus Support (sparc, and some initial 64-bit support).
  15248.  
  15249.    Linas Vepstas added GAS support for the ESA/390 "IBM 370"
  15250. architecture.
  15251.  
  15252.    Richard Henderson rewrote the Alpha assembler. Klaus Kaempf wrote
  15253. GAS and BFD support for openVMS/Alpha.
  15254.  
  15255.    Timothy Wall, Michael Hayes, and Greg Smart contributed to the
  15256. various tic* flavors.
  15257.  
  15258.    David Heine, Sterling Augustine, Bob Wilson and John Ruttenberg from
  15259. Tensilica, Inc. added support for Xtensa processors.
  15260.  
  15261.    Several engineers at Cygnus Support have also provided many small
  15262. bug fixes and configuration enhancements.
  15263.  
  15264.    Many others have contributed large or small bugfixes and
  15265. enhancements.  If you have contributed significant work and are not
  15266. mentioned on this list, and want to be, let us know.  Some of the
  15267. history has been lost; we are not intentionally leaving anyone out.
  15268.  
  15269.    ---------- Footnotes ----------
  15270.  
  15271.    (1) Any more details?
  15272.  
  15273. 
  15274. File: as.info,  Node: GNU Free Documentation License,  Next: Index,  Prev: Acknowledgements,  Up: Top
  15275.  
  15276. Appendix A GNU Free Documentation License
  15277. *****************************************
  15278.  
  15279.                         Version 1.1, March 2000
  15280.  
  15281.      Copyright (C) 2000, 2003 Free Software Foundation, Inc.
  15282.      59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  15283.  
  15284.      Everyone is permitted to copy and distribute verbatim copies
  15285.      of this license document, but changing it is not allowed.
  15286.  
  15287.  
  15288.   0. PREAMBLE
  15289.  
  15290.      The purpose of this License is to make a manual, textbook, or other
  15291.      written document "free" in the sense of freedom: to assure everyone
  15292.      the effective freedom to copy and redistribute it, with or without
  15293.      modifying it, either commercially or noncommercially.  Secondarily,
  15294.      this License preserves for the author and publisher a way to get
  15295.      credit for their work, while not being considered responsible for
  15296.      modifications made by others.
  15297.  
  15298.      This License is a kind of "copyleft", which means that derivative
  15299.      works of the document must themselves be free in the same sense.
  15300.      It complements the GNU General Public License, which is a copyleft
  15301.      license designed for free software.
  15302.  
  15303.      We have designed this License in order to use it for manuals for
  15304.      free software, because free software needs free documentation: a
  15305.      free program should come with manuals providing the same freedoms
  15306.      that the software does.  But this License is not limited to
  15307.      software manuals; it can be used for any textual work, regardless
  15308.      of subject matter or whether it is published as a printed book.
  15309.      We recommend this License principally for works whose purpose is
  15310.      instruction or reference.
  15311.  
  15312.  
  15313.   1. APPLICABILITY AND DEFINITIONS
  15314.  
  15315.      This License applies to any manual or other work that contains a
  15316.      notice placed by the copyright holder saying it can be distributed
  15317.      under the terms of this License.  The "Document", below, refers to
  15318.      any such manual or work.  Any member of the public is a licensee,
  15319.      and is addressed as "you."
  15320.  
  15321.      A "Modified Version" of the Document means any work containing the
  15322.      Document or a portion of it, either copied verbatim, or with
  15323.      modifications and/or translated into another language.
  15324.  
  15325.      A "Secondary Section" is a named appendix or a front-matter
  15326.      section of the Document that deals exclusively with the
  15327.      relationship of the publishers or authors of the Document to the
  15328.      Document's overall subject (or to related matters) and contains
  15329.      nothing that could fall directly within that overall subject.
  15330.      (For example, if the Document is in part a textbook of
  15331.      mathematics, a Secondary Section may not explain any mathematics.)
  15332.      The relationship could be a matter of historical connection with
  15333.      the subject or with related matters, or of legal, commercial,
  15334.      philosophical, ethical or political position regarding them.
  15335.  
  15336.      The "Invariant Sections" are certain Secondary Sections whose
  15337.      titles are designated, as being those of Invariant Sections, in
  15338.      the notice that says that the Document is released under this
  15339.      License.
  15340.  
  15341.      The "Cover Texts" are certain short passages of text that are
  15342.      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
  15343.      that says that the Document is released under this License.
  15344.  
  15345.      A "Transparent" copy of the Document means a machine-readable copy,
  15346.      represented in a format whose specification is available to the
  15347.      general public, whose contents can be viewed and edited directly
  15348.      and straightforwardly with generic text editors or (for images
  15349.      composed of pixels) generic paint programs or (for drawings) some
  15350.      widely available drawing editor, and that is suitable for input to
  15351.      text formatters or for automatic translation to a variety of
  15352.      formats suitable for input to text formatters.  A copy made in an
  15353.      otherwise Transparent file format whose markup has been designed
  15354.      to thwart or discourage subsequent modification by readers is not
  15355.      Transparent.  A copy that is not "Transparent" is called "Opaque."
  15356.  
  15357.      Examples of suitable formats for Transparent copies include plain
  15358.      ASCII without markup, Texinfo input format, LaTeX input format,
  15359.      SGML or XML using a publicly available DTD, and
  15360.      standard-conforming simple HTML designed for human modification.
  15361.      Opaque formats include PostScript, PDF, proprietary formats that
  15362.      can be read and edited only by proprietary word processors, SGML
  15363.      or XML for which the DTD and/or processing tools are not generally
  15364.      available, and the machine-generated HTML produced by some word
  15365.      processors for output purposes only.
  15366.  
  15367.      The "Title Page" means, for a printed book, the title page itself,
  15368.      plus such following pages as are needed to hold, legibly, the
  15369.      material this License requires to appear in the title page.  For
  15370.      works in formats which do not have any title page as such, "Title
  15371.      Page" means the text near the most prominent appearance of the
  15372.      work's title, preceding the beginning of the body of the text.
  15373.  
  15374.   2. VERBATIM COPYING
  15375.  
  15376.      You may copy and distribute the Document in any medium, either
  15377.      commercially or noncommercially, provided that this License, the
  15378.      copyright notices, and the license notice saying this License
  15379.      applies to the Document are reproduced in all copies, and that you
  15380.      add no other conditions whatsoever to those of this License.  You
  15381.      may not use technical measures to obstruct or control the reading
  15382.      or further copying of the copies you make or distribute.  However,
  15383.      you may accept compensation in exchange for copies.  If you
  15384.      distribute a large enough number of copies you must also follow
  15385.      the conditions in section 3.
  15386.  
  15387.      You may also lend copies, under the same conditions stated above,
  15388.      and you may publicly display copies.
  15389.  
  15390.   3. COPYING IN QUANTITY
  15391.  
  15392.      If you publish printed copies of the Document numbering more than
  15393.      100, and the Document's license notice requires Cover Texts, you
  15394.      must enclose the copies in covers that carry, clearly and legibly,
  15395.      all these Cover Texts: Front-Cover Texts on the front cover, and
  15396.      Back-Cover Texts on the back cover.  Both covers must also clearly
  15397.      and legibly identify you as the publisher of these copies.  The
  15398.      front cover must present the full title with all words of the
  15399.      title equally prominent and visible.  You may add other material
  15400.      on the covers in addition.  Copying with changes limited to the
  15401.      covers, as long as they preserve the title of the Document and
  15402.      satisfy these conditions, can be treated as verbatim copying in
  15403.      other respects.
  15404.  
  15405.      If the required texts for either cover are too voluminous to fit
  15406.      legibly, you should put the first ones listed (as many as fit
  15407.      reasonably) on the actual cover, and continue the rest onto
  15408.      adjacent pages.
  15409.  
  15410.      If you publish or distribute Opaque copies of the Document
  15411.      numbering more than 100, you must either include a
  15412.      machine-readable Transparent copy along with each Opaque copy, or
  15413.      state in or with each Opaque copy a publicly-accessible
  15414.      computer-network location containing a complete Transparent copy
  15415.      of the Document, free of added material, which the general
  15416.      network-using public has access to download anonymously at no
  15417.      charge using public-standard network protocols.  If you use the
  15418.      latter option, you must take reasonably prudent steps, when you
  15419.      begin distribution of Opaque copies in quantity, to ensure that
  15420.      this Transparent copy will remain thus accessible at the stated
  15421.      location until at least one year after the last time you
  15422.      distribute an Opaque copy (directly or through your agents or
  15423.      retailers) of that edition to the public.
  15424.  
  15425.      It is requested, but not required, that you contact the authors of
  15426.      the Document well before redistributing any large number of
  15427.      copies, to give them a chance to provide you with an updated
  15428.      version of the Document.
  15429.  
  15430.   4. MODIFICATIONS
  15431.  
  15432.      You may copy and distribute a Modified Version of the Document
  15433.      under the conditions of sections 2 and 3 above, provided that you
  15434.      release the Modified Version under precisely this License, with
  15435.      the Modified Version filling the role of the Document, thus
  15436.      licensing distribution and modification of the Modified Version to
  15437.      whoever possesses a copy of it.  In addition, you must do these
  15438.      things in the Modified Version:
  15439.  
  15440.      A. Use in the Title Page (and on the covers, if any) a title
  15441.      distinct    from that of the Document, and from those of previous
  15442.      versions    (which should, if there were any, be listed in the
  15443.      History section    of the Document).  You may use the same title
  15444.      as a previous version    if the original publisher of that version
  15445.      gives permission.
  15446.      B. List on the Title Page, as authors, one or more persons or
  15447.      entities    responsible for authorship of the modifications in the
  15448.      Modified    Version, together with at least five of the principal
  15449.      authors of the    Document (all of its principal authors, if it
  15450.      has less than five).
  15451.      C. State on the Title page the name of the publisher of the
  15452.      Modified Version, as the publisher.
  15453.      D. Preserve all the copyright notices of the Document.
  15454.      E. Add an appropriate copyright notice for your modifications
  15455.      adjacent to the other copyright notices.
  15456.      F. Include, immediately after the copyright notices, a license
  15457.      notice    giving the public permission to use the Modified Version
  15458.      under the    terms of this License, in the form shown in the
  15459.      Addendum below.
  15460.      G. Preserve in that license notice the full lists of Invariant
  15461.      Sections    and required Cover Texts given in the Document's
  15462.      license notice.
  15463.      H. Include an unaltered copy of this License.
  15464.      I. Preserve the section entitled "History", and its title, and add
  15465.      to    it an item stating at least the title, year, new authors, and
  15466.        publisher of the Modified Version as given on the Title Page.
  15467.      If    there is no section entitled "History" in the Document,
  15468.      create one    stating the title, year, authors, and publisher of
  15469.      the Document as    given on its Title Page, then add an item
  15470.      describing the Modified    Version as stated in the previous
  15471.      sentence.
  15472.      J. Preserve the network location, if any, given in the Document for
  15473.        public access to a Transparent copy of the Document, and
  15474.      likewise    the network locations given in the Document for
  15475.      previous versions    it was based on.  These may be placed in the
  15476.      "History" section.     You may omit a network location for a work
  15477.      that was published at    least four years before the Document
  15478.      itself, or if the original    publisher of the version it refers
  15479.      to gives permission.
  15480.      K. In any section entitled "Acknowledgements" or "Dedications",
  15481.      preserve the section's title, and preserve in the section all the
  15482.       substance and tone of each of the contributor acknowledgements
  15483.      and/or dedications given therein.
  15484.      L. Preserve all the Invariant Sections of the Document,
  15485.      unaltered in their text and in their titles.  Section numbers
  15486.      or the equivalent are not considered part of the section titles.
  15487.      M. Delete any section entitled "Endorsements."  Such a section
  15488.      may not be included in the Modified Version.
  15489.      N. Do not retitle any existing section as "Endorsements"    or to
  15490.      conflict in title with any Invariant Section.
  15491.  
  15492.      If the Modified Version includes new front-matter sections or
  15493.      appendices that qualify as Secondary Sections and contain no
  15494.      material copied from the Document, you may at your option
  15495.      designate some or all of these sections as invariant.  To do this,
  15496.      add their titles to the list of Invariant Sections in the Modified
  15497.      Version's license notice.  These titles must be distinct from any
  15498.      other section titles.
  15499.  
  15500.      You may add a section entitled "Endorsements", provided it contains
  15501.      nothing but endorsements of your Modified Version by various
  15502.      parties-for example, statements of peer review or that the text has
  15503.      been approved by an organization as the authoritative definition
  15504.      of a standard.
  15505.  
  15506.      You may add a passage of up to five words as a Front-Cover Text,
  15507.      and a passage of up to 25 words as a Back-Cover Text, to the end
  15508.      of the list of Cover Texts in the Modified Version.  Only one
  15509.      passage of Front-Cover Text and one of Back-Cover Text may be
  15510.      added by (or through arrangements made by) any one entity.  If the
  15511.      Document already includes a cover text for the same cover,
  15512.      previously added by you or by arrangement made by the same entity
  15513.      you are acting on behalf of, you may not add another; but you may
  15514.      replace the old one, on explicit permission from the previous
  15515.      publisher that added the old one.
  15516.  
  15517.      The author(s) and publisher(s) of the Document do not by this
  15518.      License give permission to use their names for publicity for or to
  15519.      assert or imply endorsement of any Modified Version.
  15520.  
  15521.   5. COMBINING DOCUMENTS
  15522.  
  15523.      You may combine the Document with other documents released under
  15524.      this License, under the terms defined in section 4 above for
  15525.      modified versions, provided that you include in the combination
  15526.      all of the Invariant Sections of all of the original documents,
  15527.      unmodified, and list them all as Invariant Sections of your
  15528.      combined work in its license notice.
  15529.  
  15530.      The combined work need only contain one copy of this License, and
  15531.      multiple identical Invariant Sections may be replaced with a single
  15532.      copy.  If there are multiple Invariant Sections with the same name
  15533.      but different contents, make the title of each such section unique
  15534.      by adding at the end of it, in parentheses, the name of the
  15535.      original author or publisher of that section if known, or else a
  15536.      unique number.  Make the same adjustment to the section titles in
  15537.      the list of Invariant Sections in the license notice of the
  15538.      combined work.
  15539.  
  15540.      In the combination, you must combine any sections entitled
  15541.      "History" in the various original documents, forming one section
  15542.      entitled "History"; likewise combine any sections entitled
  15543.      "Acknowledgements", and any sections entitled "Dedications."  You
  15544.      must delete all sections entitled "Endorsements."
  15545.  
  15546.   6. COLLECTIONS OF DOCUMENTS
  15547.  
  15548.      You may make a collection consisting of the Document and other
  15549.      documents released under this License, and replace the individual
  15550.      copies of this License in the various documents with a single copy
  15551.      that is included in the collection, provided that you follow the
  15552.      rules of this License for verbatim copying of each of the
  15553.      documents in all other respects.
  15554.  
  15555.      You may extract a single document from such a collection, and
  15556.      distribute it individually under this License, provided you insert
  15557.      a copy of this License into the extracted document, and follow
  15558.      this License in all other respects regarding verbatim copying of
  15559.      that document.
  15560.  
  15561.   7. AGGREGATION WITH INDEPENDENT WORKS
  15562.  
  15563.      A compilation of the Document or its derivatives with other
  15564.      separate and independent documents or works, in or on a volume of
  15565.      a storage or distribution medium, does not as a whole count as a
  15566.      Modified Version of the Document, provided no compilation
  15567.      copyright is claimed for the compilation.  Such a compilation is
  15568.      called an "aggregate", and this License does not apply to the
  15569.      other self-contained works thus compiled with the Document, on
  15570.      account of their being thus compiled, if they are not themselves
  15571.      derivative works of the Document.
  15572.  
  15573.      If the Cover Text requirement of section 3 is applicable to these
  15574.      copies of the Document, then if the Document is less than one
  15575.      quarter of the entire aggregate, the Document's Cover Texts may be
  15576.      placed on covers that surround only the Document within the
  15577.      aggregate.  Otherwise they must appear on covers around the whole
  15578.      aggregate.
  15579.  
  15580.   8. TRANSLATION
  15581.  
  15582.      Translation is considered a kind of modification, so you may
  15583.      distribute translations of the Document under the terms of section
  15584.      4.  Replacing Invariant Sections with translations requires special
  15585.      permission from their copyright holders, but you may include
  15586.      translations of some or all Invariant Sections in addition to the
  15587.      original versions of these Invariant Sections.  You may include a
  15588.      translation of this License provided that you also include the
  15589.      original English version of this License.  In case of a
  15590.      disagreement between the translation and the original English
  15591.      version of this License, the original English version will prevail.
  15592.  
  15593.   9. TERMINATION
  15594.  
  15595.      You may not copy, modify, sublicense, or distribute the Document
  15596.      except as expressly provided for under this License.  Any other
  15597.      attempt to copy, modify, sublicense or distribute the Document is
  15598.      void, and will automatically terminate your rights under this
  15599.      License.  However, parties who have received copies, or rights,
  15600.      from you under this License will not have their licenses
  15601.      terminated so long as such parties remain in full compliance.
  15602.  
  15603.  10. FUTURE REVISIONS OF THIS LICENSE
  15604.  
  15605.      The Free Software Foundation may publish new, revised versions of
  15606.      the GNU Free Documentation License from time to time.  Such new
  15607.      versions will be similar in spirit to the present version, but may
  15608.      differ in detail to address new problems or concerns.  See
  15609.      http://www.gnu.org/copyleft/.
  15610.  
  15611.      Each version of the License is given a distinguishing version
  15612.      number.  If the Document specifies that a particular numbered
  15613.      version of this License "or any later version" applies to it, you
  15614.      have the option of following the terms and conditions either of
  15615.      that specified version or of any later version that has been
  15616.      published (not as a draft) by the Free Software Foundation.  If
  15617.      the Document does not specify a version number of this License,
  15618.      you may choose any version ever published (not as a draft) by the
  15619.      Free Software Foundation.
  15620.  
  15621.  
  15622. ADDENDUM: How to use this License for your documents
  15623. ====================================================
  15624.  
  15625. To use this License in a document you have written, include a copy of
  15626. the License in the document and put the following copyright and license
  15627. notices just after the title page:
  15628.  
  15629.      Copyright (C)  YEAR  YOUR NAME.
  15630.      Permission is granted to copy, distribute and/or modify this document
  15631.      under the terms of the GNU Free Documentation License, Version 1.1
  15632.      or any later version published by the Free Software Foundation;
  15633.      with the Invariant Sections being LIST THEIR TITLES, with the
  15634.      Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
  15635.      A copy of the license is included in the section entitled "GNU
  15636.      Free Documentation License."
  15637.  
  15638.    If you have no Invariant Sections, write "with no Invariant Sections"
  15639. instead of saying which ones are invariant.  If you have no Front-Cover
  15640. Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being
  15641. LIST"; likewise for Back-Cover Texts.
  15642.  
  15643.    If your document contains nontrivial examples of program code, we
  15644. recommend releasing these examples in parallel under your choice of
  15645. free software license, such as the GNU General Public License, to
  15646. permit their use in free software.
  15647.  
  15648. 
  15649. File: as.info,  Node: Index,  Prev: GNU Free Documentation License,  Up: Top
  15650.  
  15651. Index
  15652. *****
  15653.  
  15654. [index]
  15655. * Menu:
  15656.  
  15657. * #:                                     Comments.            (line  39)
  15658. * #APP:                                  Preprocessing.       (line  27)
  15659. * #NO_APP:                               Preprocessing.       (line  27)
  15660. * $ in symbol names <1>:                 SH64-Chars.          (line  10)
  15661. * $ in symbol names <2>:                 SH-Chars.            (line  10)
  15662. * $ in symbol names <3>:                 H8/500-Chars.        (line  10)
  15663. * $ in symbol names <4>:                 D30V-Chars.          (line  63)
  15664. * $ in symbol names:                     D10V-Chars.          (line  46)
  15665. * $a:                                    ARM Mapping Symbols. (line   9)
  15666. * $acos math builtin, TIC54X:            TIC54X-Builtins.     (line  10)
  15667. * $asin math builtin, TIC54X:            TIC54X-Builtins.     (line  13)
  15668. * $atan math builtin, TIC54X:            TIC54X-Builtins.     (line  16)
  15669. * $atan2 math builtin, TIC54X:           TIC54X-Builtins.     (line  19)
  15670. * $ceil math builtin, TIC54X:            TIC54X-Builtins.     (line  22)
  15671. * $cos math builtin, TIC54X:             TIC54X-Builtins.     (line  28)
  15672. * $cosh math builtin, TIC54X:            TIC54X-Builtins.     (line  25)
  15673. * $cvf math builtin, TIC54X:             TIC54X-Builtins.     (line  31)
  15674. * $cvi math builtin, TIC54X:             TIC54X-Builtins.     (line  34)
  15675. * $d:                                    ARM Mapping Symbols. (line  15)
  15676. * $exp math builtin, TIC54X:             TIC54X-Builtins.     (line  37)
  15677. * $fabs math builtin, TIC54X:            TIC54X-Builtins.     (line  40)
  15678. * $firstch subsym builtin, TIC54X:       TIC54X-Macros.       (line  26)
  15679. * $floor math builtin, TIC54X:           TIC54X-Builtins.     (line  43)
  15680. * $fmod math builtin, TIC54X:            TIC54X-Builtins.     (line  47)
  15681. * $int math builtin, TIC54X:             TIC54X-Builtins.     (line  50)
  15682. * $iscons subsym builtin, TIC54X:        TIC54X-Macros.       (line  43)
  15683. * $isdefed subsym builtin, TIC54X:       TIC54X-Macros.       (line  34)
  15684. * $ismember subsym builtin, TIC54X:      TIC54X-Macros.       (line  38)
  15685. * $isname subsym builtin, TIC54X:        TIC54X-Macros.       (line  47)
  15686. * $isreg subsym builtin, TIC54X:         TIC54X-Macros.       (line  50)
  15687. * $lastch subsym builtin, TIC54X:        TIC54X-Macros.       (line  30)
  15688. * $ldexp math builtin, TIC54X:           TIC54X-Builtins.     (line  53)
  15689. * $log math builtin, TIC54X:             TIC54X-Builtins.     (line  59)
  15690. * $log10 math builtin, TIC54X:           TIC54X-Builtins.     (line  56)
  15691. * $max math builtin, TIC54X:             TIC54X-Builtins.     (line  62)
  15692. * $min math builtin, TIC54X:             TIC54X-Builtins.     (line  65)
  15693. * $pow math builtin, TIC54X:             TIC54X-Builtins.     (line  68)
  15694. * $round math builtin, TIC54X:           TIC54X-Builtins.     (line  71)
  15695. * $sgn math builtin, TIC54X:             TIC54X-Builtins.     (line  74)
  15696. * $sin math builtin, TIC54X:             TIC54X-Builtins.     (line  77)
  15697. * $sinh math builtin, TIC54X:            TIC54X-Builtins.     (line  80)
  15698. * $sqrt math builtin, TIC54X:            TIC54X-Builtins.     (line  83)
  15699. * $structacc subsym builtin, TIC54X:     TIC54X-Macros.       (line  57)
  15700. * $structsz subsym builtin, TIC54X:      TIC54X-Macros.       (line  54)
  15701. * $symcmp subsym builtin, TIC54X:        TIC54X-Macros.       (line  23)
  15702. * $symlen subsym builtin, TIC54X:        TIC54X-Macros.       (line  20)
  15703. * $t:                                    ARM Mapping Symbols. (line  12)
  15704. * $tan math builtin, TIC54X:             TIC54X-Builtins.     (line  86)
  15705. * $tanh math builtin, TIC54X:            TIC54X-Builtins.     (line  89)
  15706. * $trunc math builtin, TIC54X:           TIC54X-Builtins.     (line  92)
  15707. * -+ option, VAX/VMS:                    VAX-Opts.            (line  71)
  15708. * --:                                    Command Line.        (line  10)
  15709. * --32 option, i386:                     i386-Options.        (line   8)
  15710. * --32 option, x86-64:                   i386-Options.        (line   8)
  15711. * --64 option, i386:                     i386-Options.        (line   8)
  15712. * --64 option, x86-64:                   i386-Options.        (line   8)
  15713. * --absolute-literals:                   Xtensa Options.      (line  22)
  15714. * --alternate:                           alternate.           (line   6)
  15715. * --base-size-default-16:                M68K-Opts.           (line  40)
  15716. * --base-size-default-32:                M68K-Opts.           (line  40)
  15717. * --bitwise-or option, M680x0:           M68K-Opts.           (line  33)
  15718. * --disp-size-default-16:                M68K-Opts.           (line  49)
  15719. * --disp-size-default-32:                M68K-Opts.           (line  49)
  15720. * --emulation=crisaout command line option, CRIS: CRIS-Opts.  (line   9)
  15721. * --emulation=criself command line option, CRIS: CRIS-Opts.   (line   9)
  15722. * --enforce-aligned-data:                Sparc-Aligned-Data.  (line  11)
  15723. * --fatal-warnings:                      W.                   (line  16)
  15724. * --fixed-special-register-names command line option, MMIX: MMIX-Opts.
  15725.                                                               (line   8)
  15726. * --force-long-branchs:                  M68HC11-Opts.        (line  69)
  15727. * --generate-example:                    M68HC11-Opts.        (line  86)
  15728. * --globalize-symbols command line option, MMIX: MMIX-Opts.   (line  12)
  15729. * --gnu-syntax command line option, MMIX: MMIX-Opts.          (line  16)
  15730. * --linker-allocated-gregs command line option, MMIX: MMIX-Opts.
  15731.                                                               (line  67)
  15732. * --listing-cont-lines:                  listing.             (line  33)
  15733. * --listing-lhs-width:                   listing.             (line  15)
  15734. * --listing-lhs-width2:                  listing.             (line  20)
  15735. * --listing-rhs-width:                   listing.             (line  27)
  15736. * --longcalls:                           Xtensa Options.      (line  36)
  15737. * --march=ARCHITECTURE command line option, CRIS: CRIS-Opts.  (line  33)
  15738. * --MD:                                  MD.                  (line   6)
  15739. * --mul-bug-abort command line option, CRIS: CRIS-Opts.       (line  61)
  15740. * --no-absolute-literals:                Xtensa Options.      (line  22)
  15741. * --no-expand command line option, MMIX: MMIX-Opts.           (line  31)
  15742. * --no-longcalls:                        Xtensa Options.      (line  36)
  15743. * --no-merge-gregs command line option, MMIX: MMIX-Opts.      (line  36)
  15744. * --no-mul-bug-abort command line option, CRIS: CRIS-Opts.    (line  61)
  15745. * --no-predefined-syms command line option, MMIX: MMIX-Opts.  (line  22)
  15746. * --no-pushj-stubs command line option, MMIX: MMIX-Opts.      (line  54)
  15747. * --no-stubs command line option, MMIX:  MMIX-Opts.           (line  54)
  15748. * --no-target-align:                     Xtensa Options.      (line  29)
  15749. * --no-text-section-literals:            Xtensa Options.      (line   9)
  15750. * --no-transform:                        Xtensa Options.      (line  45)
  15751. * --no-underscore command line option, CRIS: CRIS-Opts.       (line  15)
  15752. * --no-warn:                             W.                   (line  11)
  15753. * --pcrel:                               M68K-Opts.           (line  61)
  15754. * --pic command line option, CRIS:       CRIS-Opts.           (line  27)
  15755. * --print-insn-syntax:                   M68HC11-Opts.        (line  75)
  15756. * --print-opcodes:                       M68HC11-Opts.        (line  79)
  15757. * --register-prefix-optional option, M680x0: M68K-Opts.       (line  20)
  15758. * --relax command line option, MMIX:     MMIX-Opts.           (line  19)
  15759. * --rename-section:                      Xtensa Options.      (line  53)
  15760. * --short-branchs:                       M68HC11-Opts.        (line  54)
  15761. * --statistics:                          statistics.          (line   6)
  15762. * --strict-direct-mode:                  M68HC11-Opts.        (line  44)
  15763. * --target-align:                        Xtensa Options.      (line  29)
  15764. * --text-section-literals:               Xtensa Options.      (line   9)
  15765. * --traditional-format:                  traditional-format.  (line   6)
  15766. * --transform:                           Xtensa Options.      (line  45)
  15767. * --underscore command line option, CRIS: CRIS-Opts.          (line  15)
  15768. * --warn:                                W.                   (line  19)
  15769. * -1 option, VAX/VMS:                    VAX-Opts.            (line  77)
  15770. * -32addr command line option, Alpha:    Alpha Options.       (line  50)
  15771. * -a:                                    a.                   (line   6)
  15772. * -A options, i960:                      Options-i960.        (line   6)
  15773. * -ac:                                   a.                   (line   6)
  15774. * -ad:                                   a.                   (line   6)
  15775. * -ah:                                   a.                   (line   6)
  15776. * -al:                                   a.                   (line   6)
  15777. * -an:                                   a.                   (line   6)
  15778. * -as:                                   a.                   (line   6)
  15779. * -Asparclet:                            Sparc-Opts.          (line  25)
  15780. * -Asparclite:                           Sparc-Opts.          (line  25)
  15781. * -Av6:                                  Sparc-Opts.          (line  25)
  15782. * -Av8:                                  Sparc-Opts.          (line  25)
  15783. * -Av9:                                  Sparc-Opts.          (line  25)
  15784. * -Av9a:                                 Sparc-Opts.          (line  25)
  15785. * -b option, i960:                       Options-i960.        (line  22)
  15786. * -big:                                  SH Options.          (line   9)
  15787. * -big option, M32R:                     M32R-Opts.           (line  35)
  15788. * -construct-floats:                     MIPS Opts.           (line 145)
  15789. * -D:                                    D.                   (line   6)
  15790. * -D, ignored on VAX:                    VAX-Opts.            (line  11)
  15791. * -d, VAX option:                        VAX-Opts.            (line  16)
  15792. * -dsp:                                  SH Options.          (line   9)
  15793. * -eabi= command line option, ARM:       ARM Options.         (line 104)
  15794. * -EB command line option, ARC:          ARC Options.         (line  31)
  15795. * -EB command line option, ARM:          ARM Options.         (line 109)
  15796. * -EB option (MIPS):                     MIPS Opts.           (line  13)
  15797. * -EB option, M32R:                      M32R-Opts.           (line  39)
  15798. * -EL command line option, ARC:          ARC Options.         (line  35)
  15799. * -EL command line option, ARM:          ARM Options.         (line 113)
  15800. * -EL option (MIPS):                     MIPS Opts.           (line  13)
  15801. * -EL option, M32R:                      M32R-Opts.           (line  32)
  15802. * -f:                                    f.                   (line   6)
  15803. * -F command line option, Alpha:         Alpha Options.       (line  50)
  15804. * -G command line option, Alpha:         Alpha Options.       (line  46)
  15805. * -g command line option, Alpha:         Alpha Options.       (line  40)
  15806. * -G option (MIPS):                      MIPS Opts.           (line   8)
  15807. * -H option, VAX/VMS:                    VAX-Opts.            (line  81)
  15808. * -h option, VAX/VMS:                    VAX-Opts.            (line  45)
  15809. * -I PATH:                               I.                   (line   6)
  15810. * -ignore-parallel-conflicts option, M32RX: M32R-Opts.        (line  87)
  15811. * -Ip option, M32RX:                     M32R-Opts.           (line  97)
  15812. * -J, ignored on VAX:                    VAX-Opts.            (line  27)
  15813. * -K:                                    K.                   (line   6)
  15814. * -k command line option, ARM:           ARM Options.         (line 117)
  15815. * -KPIC option, M32R:                    M32R-Opts.           (line  42)
  15816. * -L:                                    L.                   (line   6)
  15817. * -l option, M680x0:                     M68K-Opts.           (line   8)
  15818. * -little:                               SH Options.          (line   9)
  15819. * -little option, M32R:                  M32R-Opts.           (line  27)
  15820. * -M:                                    M.                   (line   6)
  15821. * -m11/03:                               PDP-11-Options.      (line 140)
  15822. * -m11/04:                               PDP-11-Options.      (line 143)
  15823. * -m11/05:                               PDP-11-Options.      (line 146)
  15824. * -m11/10:                               PDP-11-Options.      (line 146)
  15825. * -m11/15:                               PDP-11-Options.      (line 149)
  15826. * -m11/20:                               PDP-11-Options.      (line 149)
  15827. * -m11/21:                               PDP-11-Options.      (line 152)
  15828. * -m11/23:                               PDP-11-Options.      (line 155)
  15829. * -m11/24:                               PDP-11-Options.      (line 155)
  15830. * -m11/34:                               PDP-11-Options.      (line 158)
  15831. * -m11/34a:                              PDP-11-Options.      (line 161)
  15832. * -m11/35:                               PDP-11-Options.      (line 164)
  15833. * -m11/40:                               PDP-11-Options.      (line 164)
  15834. * -m11/44:                               PDP-11-Options.      (line 167)
  15835. * -m11/45:                               PDP-11-Options.      (line 170)
  15836. * -m11/50:                               PDP-11-Options.      (line 170)
  15837. * -m11/53:                               PDP-11-Options.      (line 173)
  15838. * -m11/55:                               PDP-11-Options.      (line 170)
  15839. * -m11/60:                               PDP-11-Options.      (line 176)
  15840. * -m11/70:                               PDP-11-Options.      (line 170)
  15841. * -m11/73:                               PDP-11-Options.      (line 173)
  15842. * -m11/83:                               PDP-11-Options.      (line 173)
  15843. * -m11/84:                               PDP-11-Options.      (line 173)
  15844. * -m11/93:                               PDP-11-Options.      (line 173)
  15845. * -m11/94:                               PDP-11-Options.      (line 173)
  15846. * -m32r option, M32R:                    M32R-Opts.           (line  21)
  15847. * -m32rx option, M32R2:                  M32R-Opts.           (line  17)
  15848. * -m32rx option, M32RX:                  M32R-Opts.           (line   9)
  15849. * -m68000 and related options:           M68K-Opts.           (line  73)
  15850. * -m68hc11:                              M68HC11-Opts.        (line   9)
  15851. * -m68hc12:                              M68HC11-Opts.        (line  14)
  15852. * -m68hcs12:                             M68HC11-Opts.        (line  21)
  15853. * -mall:                                 PDP-11-Options.      (line  26)
  15854. * -mall-extensions:                      PDP-11-Options.      (line  26)
  15855. * -mapcs command line option, ARM:       ARM Options.         (line  77)
  15856. * -mapcs-float command line option, ARM: ARM Options.         (line  90)
  15857. * -mapcs-reentrant command line option, ARM: ARM Options.     (line  95)
  15858. * -marc[5|6|7|8] command line option, ARC: ARC Options.       (line   6)
  15859. * -march= command line option, ARM:      ARM Options.         (line  35)
  15860. * -matpcs command line option, ARM:      ARM Options.         (line  82)
  15861. * -mcis:                                 PDP-11-Options.      (line  32)
  15862. * -mconstant-gp command line option, IA-64: IA-64 Options.    (line   6)
  15863. * -mCPU command line option, Alpha:      Alpha Options.       (line   6)
  15864. * -mcpu option, cpu:                     TIC54X-Opts.         (line  15)
  15865. * -mcpu= command line option, ARM:       ARM Options.         (line   6)
  15866. * -mcsm:                                 PDP-11-Options.      (line  43)
  15867. * -mdebug command line option, Alpha:    Alpha Options.       (line  25)
  15868. * -me option, stderr redirect:           TIC54X-Opts.         (line  20)
  15869. * -meis:                                 PDP-11-Options.      (line  46)
  15870. * -merrors-to-file option, stderr redirect: TIC54X-Opts.      (line  20)
  15871. * -mf option, far-mode:                  TIC54X-Opts.         (line   8)
  15872. * -mf11:                                 PDP-11-Options.      (line 122)
  15873. * -mfar-mode option, far-mode:           TIC54X-Opts.         (line   8)
  15874. * -mfis:                                 PDP-11-Options.      (line  51)
  15875. * -mfloat-abi= command line option, ARM: ARM Options.         (line  99)
  15876. * -mfp-11:                               PDP-11-Options.      (line  56)
  15877. * -mfpp:                                 PDP-11-Options.      (line  56)
  15878. * -mfpu:                                 PDP-11-Options.      (line  56)
  15879. * -mfpu= command line option, ARM:       ARM Options.         (line  49)
  15880. * -mip2022 option, IP2K:                 IP2K-Opts.           (line  14)
  15881. * -mip2022ext option, IP2022:            IP2K-Opts.           (line   9)
  15882. * -mj11:                                 PDP-11-Options.      (line 126)
  15883. * -mka11:                                PDP-11-Options.      (line  92)
  15884. * -mkb11:                                PDP-11-Options.      (line  95)
  15885. * -mkd11a:                               PDP-11-Options.      (line  98)
  15886. * -mkd11b:                               PDP-11-Options.      (line 101)
  15887. * -mkd11d:                               PDP-11-Options.      (line 104)
  15888. * -mkd11e:                               PDP-11-Options.      (line 107)
  15889. * -mkd11f:                               PDP-11-Options.      (line 110)
  15890. * -mkd11h:                               PDP-11-Options.      (line 110)
  15891. * -mkd11k:                               PDP-11-Options.      (line 114)
  15892. * -mkd11q:                               PDP-11-Options.      (line 110)
  15893. * -mkd11z:                               PDP-11-Options.      (line 118)
  15894. * -mkev11:                               PDP-11-Options.      (line  51)
  15895. * -mlimited-eis:                         PDP-11-Options.      (line  64)
  15896. * -mlong:                                M68HC11-Opts.        (line  32)
  15897. * -mlong-double:                         M68HC11-Opts.        (line  40)
  15898. * -mmfpt:                                PDP-11-Options.      (line  70)
  15899. * -mmicrocode:                           PDP-11-Options.      (line  83)
  15900. * -mmutiproc:                            PDP-11-Options.      (line  73)
  15901. * -mmxps:                                PDP-11-Options.      (line  77)
  15902. * -mno-cis:                              PDP-11-Options.      (line  32)
  15903. * -mno-csm:                              PDP-11-Options.      (line  43)
  15904. * -mno-eis:                              PDP-11-Options.      (line  46)
  15905. * -mno-extensions:                       PDP-11-Options.      (line  29)
  15906. * -mno-fis:                              PDP-11-Options.      (line  51)
  15907. * -mno-fp-11:                            PDP-11-Options.      (line  56)
  15908. * -mno-fpp:                              PDP-11-Options.      (line  56)
  15909. * -mno-fpu:                              PDP-11-Options.      (line  56)
  15910. * -mno-kev11:                            PDP-11-Options.      (line  51)
  15911. * -mno-limited-eis:                      PDP-11-Options.      (line  64)
  15912. * -mno-mfpt:                             PDP-11-Options.      (line  70)
  15913. * -mno-microcode:                        PDP-11-Options.      (line  83)
  15914. * -mno-mutiproc:                         PDP-11-Options.      (line  73)
  15915. * -mno-mxps:                             PDP-11-Options.      (line  77)
  15916. * -mno-pic:                              PDP-11-Options.      (line  11)
  15917. * -mno-spl:                              PDP-11-Options.      (line  80)
  15918. * -mno-sym32:                            MIPS Opts.           (line 133)
  15919. * -mpic:                                 PDP-11-Options.      (line  11)
  15920. * -mrelax command line option, V850:     V850 Options.        (line  51)
  15921. * -mshort:                               M68HC11-Opts.        (line  27)
  15922. * -mshort-double:                        M68HC11-Opts.        (line  36)
  15923. * -mspl:                                 PDP-11-Options.      (line  80)
  15924. * -msym32:                               MIPS Opts.           (line 133)
  15925. * -mt11:                                 PDP-11-Options.      (line 130)
  15926. * -mthumb command line option, ARM:      ARM Options.         (line  68)
  15927. * -mthumb-interwork command line option, ARM: ARM Options.    (line  73)
  15928. * -mv850 command line option, V850:      V850 Options.        (line  23)
  15929. * -mv850any command line option, V850:   V850 Options.        (line  41)
  15930. * -mv850e command line option, V850:     V850 Options.        (line  29)
  15931. * -mv850e1 command line option, V850:    V850 Options.        (line  35)
  15932. * -N command line option, CRIS:          CRIS-Opts.           (line  57)
  15933. * -nIp option, M32RX:                    M32R-Opts.           (line 101)
  15934. * -no-bitinst, M32R2:                    M32R-Opts.           (line  54)
  15935. * -no-construct-floats:                  MIPS Opts.           (line 145)
  15936. * -no-ignore-parallel-conflicts option, M32RX: M32R-Opts.     (line  93)
  15937. * -no-mdebug command line option, Alpha: Alpha Options.       (line  25)
  15938. * -no-parallel option, M32RX:            M32R-Opts.           (line  51)
  15939. * -no-relax option, i960:                Options-i960.        (line  66)
  15940. * -no-warn-explicit-parallel-conflicts option, M32RX: M32R-Opts.
  15941.                                                               (line  79)
  15942. * -no-warn-unmatched-high option, M32R:  M32R-Opts.           (line 111)
  15943. * -nocpp ignored (MIPS):                 MIPS Opts.           (line 136)
  15944. * -o:                                    o.                   (line   6)
  15945. * -O option, M32RX:                      M32R-Opts.           (line  59)
  15946. * -parallel option, M32RX:               M32R-Opts.           (line  46)
  15947. * -R:                                    R.                   (line   6)
  15948. * -relax:                                SH Options.          (line   9)
  15949. * -relax command line option, Alpha:     Alpha Options.       (line  32)
  15950. * -renesas:                              SH Options.          (line   9)
  15951. * -S, ignored on VAX:                    VAX-Opts.            (line  11)
  15952. * -small:                                SH Options.          (line   9)
  15953. * -t, ignored on VAX:                    VAX-Opts.            (line  36)
  15954. * -T, ignored on VAX:                    VAX-Opts.            (line  11)
  15955. * -v:                                    v.                   (line   6)
  15956. * -V, redundant on VAX:                  VAX-Opts.            (line  22)
  15957. * -version:                              v.                   (line   6)
  15958. * -W:                                    W.                   (line  11)
  15959. * -warn-explicit-parallel-conflicts option, M32RX: M32R-Opts. (line  65)
  15960. * -warn-unmatched-high option, M32R:     M32R-Opts.           (line 105)
  15961. * -Wnp option, M32RX:                    M32R-Opts.           (line  83)
  15962. * -Wnuh option, M32RX:                   M32R-Opts.           (line 117)
  15963. * -Wp option, M32RX:                     M32R-Opts.           (line  75)
  15964. * -wsigned_overflow command line option, V850: V850 Options.  (line   9)
  15965. * -Wuh option, M32RX:                    M32R-Opts.           (line 114)
  15966. * -wunsigned_overflow command line option, V850: V850 Options.
  15967.                                                               (line  16)
  15968. * -x command line option, MMIX:          MMIX-Opts.           (line  44)
  15969. * -z8001 command line option, Z8000:     Z8000 Options.       (line   6)
  15970. * -z8002 command line option, Z8000:     Z8000 Options.       (line   9)
  15971. * . (symbol):                            Dot.                 (line   6)
  15972. * .big directive, M32RX:                 M32R-Directives.     (line  88)
  15973. * .cantunwind directive, ARM:            ARM Directives.      (line  87)
  15974. * .fnend directive, ARM:                 ARM Directives.      (line  78)
  15975. * .fnstart directive, ARM:               ARM Directives.      (line  75)
  15976. * .handlerdata directive, ARM:           ARM Directives.      (line  98)
  15977. * .insn:                                 MIPS insn.           (line   6)
  15978. * .little directive, M32RX:              M32R-Directives.     (line  82)
  15979. * .ltorg directive, ARM:                 ARM Directives.      (line  58)
  15980. * .m32r directive, M32R:                 M32R-Directives.     (line  66)
  15981. * .m32r2 directive, M32R2:               M32R-Directives.     (line  77)
  15982. * .m32rx directive, M32RX:               M32R-Directives.     (line  72)
  15983. * .movsp directive, ARM:                 ARM Directives.      (line 136)
  15984. * .o:                                    Object.              (line   6)
  15985. * .pad directive, ARM:                   ARM Directives.      (line 131)
  15986. * .param on HPPA:                        HPPA Directives.     (line  19)
  15987. * .personality directive, ARM:           ARM Directives.      (line  91)
  15988. * .personalityindex directive, ARM:      ARM Directives.      (line  94)
  15989. * .pool directive, ARM:                  ARM Directives.      (line  72)
  15990. * .save directive, ARM:                  ARM Directives.      (line 107)
  15991. * .set autoextend:                       MIPS autoextend.     (line   6)
  15992. * .set mdmx:                             MIPS ASE instruction generation overrides.
  15993.                                                               (line  11)
  15994. * .set mips3d:                           MIPS ASE instruction generation overrides.
  15995.                                                               (line   6)
  15996. * .set mipsN:                            MIPS ISA.            (line   6)
  15997. * .set noautoextend:                     MIPS autoextend.     (line   6)
  15998. * .set nomdmx:                           MIPS ASE instruction generation overrides.
  15999.                                                               (line  11)
  16000. * .set nomips3d:                         MIPS ASE instruction generation overrides.
  16001.                                                               (line   6)
  16002. * .set nosym32:                          MIPS symbol sizes.   (line   6)
  16003. * .set pop:                              MIPS option stack.   (line   6)
  16004. * .set push:                             MIPS option stack.   (line   6)
  16005. * .set sym32:                            MIPS symbol sizes.   (line   6)
  16006. * .setfp directive, ARM:                 ARM Directives.      (line 139)
  16007. * .unwind_raw directive, ARM:            ARM Directives.      (line 153)
  16008. * .v850 directive, V850:                 V850 Directives.     (line  14)
  16009. * .v850e directive, V850:                V850 Directives.     (line  20)
  16010. * .v850e1 directive, V850:               V850 Directives.     (line  26)
  16011. * .z8001:                                Z8000 Directives.    (line  11)
  16012. * .z8002:                                Z8000 Directives.    (line  15)
  16013. * 16-bit code, i386:                     i386-16bit.          (line   6)
  16014. * 29K support:                           AMD29K-Dependent.    (line   6)
  16015. * 2byte directive, ARC:                  ARC Directives.      (line   9)
  16016. * 3byte directive, ARC:                  ARC Directives.      (line  12)
  16017. * 3DNow!, i386:                          i386-SIMD.           (line   6)
  16018. * 3DNow!, x86-64:                        i386-SIMD.           (line   6)
  16019. * 430 support:                           MSP430-Dependent.    (line   6)
  16020. * 4byte directive, ARC:                  ARC Directives.      (line  15)
  16021. * : (label):                             Statements.          (line  30)
  16022. * @word modifier, D10V:                  D10V-Word.           (line   6)
  16023. * \" (doublequote character):            Strings.             (line  43)
  16024. * \\ (\ character):                      Strings.             (line  40)
  16025. * \b (backspace character):              Strings.             (line  15)
  16026. * \DDD (octal character code):           Strings.             (line  30)
  16027. * \f (formfeed character):               Strings.             (line  18)
  16028. * \n (newline character):                Strings.             (line  21)
  16029. * \r (carriage return character):        Strings.             (line  24)
  16030. * \t (tab):                              Strings.             (line  27)
  16031. * \XD... (hex character code):           Strings.             (line  36)
  16032. * _ opcode prefix:                       Xtensa Opcodes.      (line   9)
  16033. * a.out:                                 Object.              (line   6)
  16034. * a.out symbol attributes:               a.out Symbols.       (line   6)
  16035. * A_DIR environment variable, TIC54X:    TIC54X-Env.          (line   6)
  16036. * ABI options, SH64:                     SH64 Options.        (line  29)
  16037. * ABORT directive:                       ABORT.               (line   6)
  16038. * abort directive:                       Abort.               (line   6)
  16039. * absolute section:                      Ld Sections.         (line  29)
  16040. * absolute-literals directive:           Absolute Literals Directive.
  16041.                                                               (line   6)
  16042. * ADDI instructions, relaxation:         Xtensa Immediate Relaxation.
  16043.                                                               (line  43)
  16044. * addition, permitted arguments:         Infix Ops.           (line  46)
  16045. * addresses:                             Expressions.         (line   6)
  16046. * addresses, format of:                  Secs Background.     (line  68)
  16047. * addressing modes, D10V:                D10V-Addressing.     (line   6)
  16048. * addressing modes, D30V:                D30V-Addressing.     (line   6)
  16049. * addressing modes, H8/300:              H8/300-Addressing.   (line   6)
  16050. * addressing modes, H8/500:              H8/500-Addressing.   (line   6)
  16051. * addressing modes, M680x0:              M68K-Syntax.         (line  21)
  16052. * addressing modes, M68HC11:             M68HC11-Syntax.      (line  17)
  16053. * addressing modes, SH:                  SH-Addressing.       (line   6)
  16054. * addressing modes, SH64:                SH64-Addressing.     (line   6)
  16055. * addressing modes, Z8000:               Z8000-Addressing.    (line   6)
  16056. * ADR reg,<label> pseudo op, ARM:        ARM Opcodes.         (line  25)
  16057. * ADRL reg,<label> pseudo op, ARM:       ARM Opcodes.         (line  35)
  16058. * advancing location counter:            Org.                 (line   6)
  16059. * align directive:                       Align.               (line   6)
  16060. * align directive, ARM:                  ARM Directives.      (line   6)
  16061. * align directive, M88K:                 M88K Directives.     (line   9)
  16062. * align directive, SPARC:                Sparc-Directives.    (line   9)
  16063. * align directive, TIC54X:               TIC54X-Directives.   (line   6)
  16064. * alignment of branch targets:           Xtensa Automatic Alignment.
  16065.                                                               (line   6)
  16066. * alignment of ENTRY instructions:       Xtensa Automatic Alignment.
  16067.                                                               (line   6)
  16068. * alignment of LOOP instructions:        Xtensa Automatic Alignment.
  16069.                                                               (line   6)
  16070. * Alpha floating point (IEEE):           Alpha Floating Point.
  16071.                                                               (line   6)
  16072. * Alpha line comment character:          Alpha-Chars.         (line   6)
  16073. * Alpha line separator:                  Alpha-Chars.         (line   8)
  16074. * Alpha notes:                           Alpha Notes.         (line   6)
  16075. * Alpha options:                         Alpha Options.       (line   6)
  16076. * Alpha registers:                       Alpha-Regs.          (line   6)
  16077. * Alpha relocations:                     Alpha-Relocs.        (line   6)
  16078. * Alpha support:                         Alpha-Dependent.     (line   6)
  16079. * Alpha Syntax:                          Alpha Options.       (line  54)
  16080. * Alpha-only directives:                 Alpha Directives.    (line  10)
  16081. * altered difference tables:             Word.                (line  12)
  16082. * alternate syntax for the 680x0:        M68K-Moto-Syntax.    (line   6)
  16083. * AMD 29K floating point (IEEE):         AMD29K Floating Point.
  16084.                                                               (line   6)
  16085. * AMD 29K identifiers:                   AMD29K-Chars.        (line   8)
  16086. * AMD 29K line comment character:        AMD29K-Chars.        (line   6)
  16087. * AMD 29K machine directives:            AMD29K Directives.   (line   6)
  16088. * AMD 29K macros:                        AMD29K-Macros.       (line   6)
  16089. * AMD 29K opcodes:                       AMD29K Opcodes.      (line   6)
  16090. * AMD 29K options (none):                AMD29K Options.      (line   6)
  16091. * AMD 29K protected registers:           AMD29K-Regs.         (line  20)
  16092. * AMD 29K register names:                AMD29K-Regs.         (line   6)
  16093. * AMD 29K special purpose registers:     AMD29K-Regs.         (line  20)
  16094. * AMD 29K support:                       AMD29K-Dependent.    (line   6)
  16095. * ARC floating point (IEEE):             ARC Floating Point.  (line   6)
  16096. * ARC machine directives:                ARC Directives.      (line   6)
  16097. * ARC opcodes:                           ARC Opcodes.         (line   6)
  16098. * ARC options (none):                    ARC Options.         (line   6)
  16099. * ARC register names:                    ARC-Regs.            (line   6)
  16100. * ARC special characters:                ARC-Chars.           (line   6)
  16101. * ARC support:                           ARC-Dependent.       (line   6)
  16102. * arc5 arc5, ARC:                        ARC Options.         (line  10)
  16103. * arc6 arc6, ARC:                        ARC Options.         (line  13)
  16104. * arc7 arc7, ARC:                        ARC Options.         (line  21)
  16105. * arc8 arc8, ARC:                        ARC Options.         (line  24)
  16106. * arch directive, i386:                  i386-Arch.           (line   6)
  16107. * arch directive, x86-64:                i386-Arch.           (line   6)
  16108. * architecture options, i960:            Options-i960.        (line   6)
  16109. * architecture options, IP2022:          IP2K-Opts.           (line   9)
  16110. * architecture options, IP2K:            IP2K-Opts.           (line  14)
  16111. * architecture options, M32R:            M32R-Opts.           (line  21)
  16112. * architecture options, M32R2:           M32R-Opts.           (line  17)
  16113. * architecture options, M32RX:           M32R-Opts.           (line   9)
  16114. * architecture options, M680x0:          M68K-Opts.           (line  73)
  16115. * Architecture variant option, CRIS:     CRIS-Opts.           (line  33)
  16116. * architectures, PowerPC:                PowerPC-Opts.        (line   6)
  16117. * architectures, SPARC:                  Sparc-Opts.          (line   6)
  16118. * arguments for addition:                Infix Ops.           (line  46)
  16119. * arguments for subtraction:             Infix Ops.           (line  51)
  16120. * arguments in expressions:              Arguments.           (line   6)
  16121. * arithmetic functions:                  Operators.           (line   6)
  16122. * arithmetic operands:                   Arguments.           (line   6)
  16123. * arm directive, ARM:                    ARM Directives.      (line  36)
  16124. * ARM floating point (IEEE):             ARM Floating Point.  (line   6)
  16125. * ARM identifiers:                       ARM-Chars.           (line  15)
  16126. * ARM immediate character:               ARM-Chars.           (line  13)
  16127. * ARM line comment character:            ARM-Chars.           (line   6)
  16128. * ARM line separator:                    ARM-Chars.           (line  10)
  16129. * ARM machine directives:                ARM Directives.      (line   6)
  16130. * ARM opcodes:                           ARM Opcodes.         (line   6)
  16131. * ARM options (none):                    ARM Options.         (line   6)
  16132. * ARM register names:                    ARM-Regs.            (line   6)
  16133. * ARM support:                           ARM-Dependent.       (line   6)
  16134. * ascii directive:                       Ascii.               (line   6)
  16135. * asciz directive:                       Asciz.               (line   6)
  16136. * asg directive, TIC54X:                 TIC54X-Directives.   (line  20)
  16137. * assembler bugs, reporting:             Bug Reporting.       (line   6)
  16138. * assembler crash:                       Bug Criteria.        (line   9)
  16139. * assembler directive .arch, CRIS:       CRIS-Pseudos.        (line  45)
  16140. * assembler directive .dword, CRIS:      CRIS-Pseudos.        (line  12)
  16141. * assembler directive .far, M68HC11:     M68HC11-Directives.  (line  20)
  16142. * assembler directive .interrupt, M68HC11: M68HC11-Directives.
  16143.                                                               (line  26)
  16144. * assembler directive .mode, M68HC11:    M68HC11-Directives.  (line  16)
  16145. * assembler directive .relax, M68HC11:   M68HC11-Directives.  (line  10)
  16146. * assembler directive .syntax, CRIS:     CRIS-Pseudos.        (line  17)
  16147. * assembler directive .xrefb, M68HC11:   M68HC11-Directives.  (line  31)
  16148. * assembler directive BSPEC, MMIX:       MMIX-Pseudos.        (line 131)
  16149. * assembler directive BYTE, MMIX:        MMIX-Pseudos.        (line  97)
  16150. * assembler directive ESPEC, MMIX:       MMIX-Pseudos.        (line 131)
  16151. * assembler directive GREG, MMIX:        MMIX-Pseudos.        (line  50)
  16152. * assembler directive IS, MMIX:          MMIX-Pseudos.        (line  42)
  16153. * assembler directive LOC, MMIX:         MMIX-Pseudos.        (line   7)
  16154. * assembler directive LOCAL, MMIX:       MMIX-Pseudos.        (line  28)
  16155. * assembler directive OCTA, MMIX:        MMIX-Pseudos.        (line 108)
  16156. * assembler directive PREFIX, MMIX:      MMIX-Pseudos.        (line 120)
  16157. * assembler directive TETRA, MMIX:       MMIX-Pseudos.        (line 108)
  16158. * assembler directive WYDE, MMIX:        MMIX-Pseudos.        (line 108)
  16159. * assembler directives, CRIS:            CRIS-Pseudos.        (line   6)
  16160. * assembler directives, M68HC11:         M68HC11-Directives.  (line   6)
  16161. * assembler directives, M68HC12:         M68HC11-Directives.  (line   6)
  16162. * assembler directives, MMIX:            MMIX-Pseudos.        (line   6)
  16163. * assembler internal logic error:        As Sections.         (line  13)
  16164. * assembler version:                     v.                   (line   6)
  16165. * assembler, and linker:                 Secs Background.     (line  10)
  16166. * assembly listings, enabling:           a.                   (line   6)
  16167. * assigning values to symbols <1>:       Equ.                 (line   6)
  16168. * assigning values to symbols:           Setting Symbols.     (line   6)
  16169. * atmp directive, i860:                  Directives-i860.     (line  16)
  16170. * att_syntax pseudo op, i386:            i386-Syntax.         (line   6)
  16171. * att_syntax pseudo op, x86-64:          i386-Syntax.         (line   6)
  16172. * attributes, symbol:                    Symbol Attributes.   (line   6)
  16173. * auxiliary attributes, COFF symbols:    COFF Symbols.        (line  19)
  16174. * auxiliary symbol information, COFF:    Dim.                 (line   6)
  16175. * Av7:                                   Sparc-Opts.          (line  25)
  16176. * backslash (\\):                        Strings.             (line  40)
  16177. * backspace (\b):                        Strings.             (line  15)
  16178. * balign directive:                      Balign.              (line   6)
  16179. * balignl directive:                     Balign.              (line  27)
  16180. * balignw directive:                     Balign.              (line  27)
  16181. * bes directive, TIC54X:                 TIC54X-Directives.   (line 197)
  16182. * big endian output, MIPS:               Overview.            (line 550)
  16183. * big endian output, PJ:                 Overview.            (line 457)
  16184. * big-endian output, MIPS:               MIPS Opts.           (line  13)
  16185. * bignums:                               Bignums.             (line   6)
  16186. * binary constants, TIC54X:              TIC54X-Constants.    (line   8)
  16187. * binary files, including:               Incbin.              (line   6)
  16188. * binary integers:                       Integers.            (line   6)
  16189. * bit names, IA-64:                      IA-64-Bits.          (line   6)
  16190. * bitfields, not supported on VAX:       VAX-no.              (line   6)
  16191. * block:                                 Z8000 Directives.    (line  55)
  16192. * block directive, AMD 29K:              AMD29K Directives.   (line   6)
  16193. * branch improvement, M680x0:            M68K-Branch.         (line   6)
  16194. * branch improvement, M68HC11:           M68HC11-Branch.      (line   6)
  16195. * branch improvement, VAX:               VAX-branch.          (line   6)
  16196. * branch instructions, relaxation:       Xtensa Branch Relaxation.
  16197.                                                               (line   6)
  16198. * branch recording, i960:                Options-i960.        (line  22)
  16199. * branch statistics table, i960:         Options-i960.        (line  40)
  16200. * branch target alignment:               Xtensa Automatic Alignment.
  16201.                                                               (line   6)
  16202. * break directive, TIC54X:               TIC54X-Directives.   (line 143)
  16203. * BSD syntax:                            PDP-11-Syntax.       (line   6)
  16204. * bss directive, i960:                   Directives-i960.     (line   6)
  16205. * bss directive, M88K:                   M88K Directives.     (line  40)
  16206. * bss directive, TIC54X:                 TIC54X-Directives.   (line  29)
  16207. * bss section <1>:                       bss.                 (line   6)
  16208. * bss section:                           Ld Sections.         (line  20)
  16209. * bug criteria:                          Bug Criteria.        (line   6)
  16210. * bug reports:                           Bug Reporting.       (line   6)
  16211. * bugs in assembler:                     Reporting Bugs.      (line   6)
  16212. * Built-in symbols, CRIS:                CRIS-Symbols.        (line   6)
  16213. * builtin math functions, TIC54X:        TIC54X-Builtins.     (line   6)
  16214. * builtin subsym functions, TIC54X:      TIC54X-Macros.       (line  16)
  16215. * bus lock prefixes, i386:               i386-Prefixes.       (line  36)
  16216. * bval:                                  Z8000 Directives.    (line  30)
  16217. * byte directive:                        Byte.                (line   6)
  16218. * byte directive, TIC54X:                TIC54X-Directives.   (line  36)
  16219. * C54XDSP_DIR environment variable, TIC54X: TIC54X-Env.       (line   6)
  16220. * c_mode directive, TIC54X:              TIC54X-Directives.   (line  51)
  16221. * call instructions, i386:               i386-Mnemonics.      (line  51)
  16222. * call instructions, relaxation:         Xtensa Call Relaxation.
  16223.                                                               (line   6)
  16224. * call instructions, x86-64:             i386-Mnemonics.      (line  51)
  16225. * callj, i960 pseudo-opcode:             callj-i960.          (line   6)
  16226. * carriage return (\r):                  Strings.             (line  24)
  16227. * cfi_endproc directive:                 CFI directives.      (line  14)
  16228. * cfi_startproc directive:               CFI directives.      (line   6)
  16229. * char directive, TIC54X:                TIC54X-Directives.   (line  36)
  16230. * character constants:                   Characters.          (line   6)
  16231. * character escape codes:                Strings.             (line  15)
  16232. * character, single:                     Chars.               (line   6)
  16233. * characters used in symbols:            Symbol Intro.        (line   6)
  16234. * clink directive, TIC54X:               TIC54X-Directives.   (line  45)
  16235. * code directive, ARM:                   ARM Directives.      (line  29)
  16236. * code16 directive, i386:                i386-16bit.          (line   6)
  16237. * code16gcc directive, i386:             i386-16bit.          (line   6)
  16238. * code32 directive, i386:                i386-16bit.          (line   6)
  16239. * code64 directive, i386:                i386-16bit.          (line   6)
  16240. * code64 directive, x86-64:              i386-16bit.          (line   6)
  16241. * COFF auxiliary symbol information:     Dim.                 (line   6)
  16242. * COFF structure debugging:              Tag.                 (line   6)
  16243. * COFF symbol attributes:                COFF Symbols.        (line   6)
  16244. * COFF symbol descriptor:                Desc.                (line   6)
  16245. * COFF symbol storage class:             Scl.                 (line   6)
  16246. * COFF symbol type:                      Type.                (line  11)
  16247. * COFF symbols, debugging:               Def.                 (line   6)
  16248. * COFF value attribute:                  Val.                 (line   6)
  16249. * COMDAT:                                Linkonce.            (line   6)
  16250. * comm directive:                        Comm.                (line   6)
  16251. * command line conventions:              Command Line.        (line   6)
  16252. * command line options, V850:            V850 Options.        (line   9)
  16253. * command-line options ignored, VAX:     VAX-Opts.            (line   6)
  16254. * comments:                              Comments.            (line   6)
  16255. * comments, M680x0:                      M68K-Chars.          (line   6)
  16256. * comments, removed by preprocessor:     Preprocessing.       (line  11)
  16257. * common directive, SPARC:               Sparc-Directives.    (line  12)
  16258. * common sections:                       Linkonce.            (line   6)
  16259. * common variable storage:               bss.                 (line   6)
  16260. * compare and jump expansions, i960:     Compare-and-branch-i960.
  16261.                                                               (line  13)
  16262. * compare/branch instructions, i960:     Compare-and-branch-i960.
  16263.                                                               (line   6)
  16264. * comparison expressions:                Infix Ops.           (line  57)
  16265. * conditional assembly:                  If.                  (line   6)
  16266. * constant, single character:            Chars.               (line   6)
  16267. * constants:                             Constants.           (line   6)
  16268. * constants, bignum:                     Bignums.             (line   6)
  16269. * constants, character:                  Characters.          (line   6)
  16270. * constants, converted by preprocessor:  Preprocessing.       (line  14)
  16271. * constants, floating point:             Flonums.             (line   6)
  16272. * constants, integer:                    Integers.            (line   6)
  16273. * constants, number:                     Numbers.             (line   6)
  16274. * constants, string:                     Strings.             (line   6)
  16275. * constants, TIC54X:                     TIC54X-Constants.    (line   6)
  16276. * conversion instructions, i386:         i386-Mnemonics.      (line  32)
  16277. * conversion instructions, x86-64:       i386-Mnemonics.      (line  32)
  16278. * coprocessor wait, i386:                i386-Prefixes.       (line  40)
  16279. * copy directive, TIC54X:                TIC54X-Directives.   (line  54)
  16280. * cputype directive, AMD 29K:            AMD29K Directives.   (line  14)
  16281. * crash of assembler:                    Bug Criteria.        (line   9)
  16282. * CRIS --emulation=crisaout command line option: CRIS-Opts.   (line   9)
  16283. * CRIS --emulation=criself command line option: CRIS-Opts.    (line   9)
  16284. * CRIS --march=ARCHITECTURE command line option: CRIS-Opts.   (line  33)
  16285. * CRIS --mul-bug-abort command line option: CRIS-Opts.        (line  61)
  16286. * CRIS --no-mul-bug-abort command line option: CRIS-Opts.     (line  61)
  16287. * CRIS --no-underscore command line option: CRIS-Opts.        (line  15)
  16288. * CRIS --pic command line option:        CRIS-Opts.           (line  27)
  16289. * CRIS --underscore command line option: CRIS-Opts.           (line  15)
  16290. * CRIS -N command line option:           CRIS-Opts.           (line  57)
  16291. * CRIS architecture variant option:      CRIS-Opts.           (line  33)
  16292. * CRIS assembler directive .arch:        CRIS-Pseudos.        (line  45)
  16293. * CRIS assembler directive .dword:       CRIS-Pseudos.        (line  12)
  16294. * CRIS assembler directive .syntax:      CRIS-Pseudos.        (line  17)
  16295. * CRIS assembler directives:             CRIS-Pseudos.        (line   6)
  16296. * CRIS built-in symbols:                 CRIS-Symbols.        (line   6)
  16297. * CRIS instruction expansion:            CRIS-Expand.         (line   6)
  16298. * CRIS line comment characters:          CRIS-Chars.          (line   6)
  16299. * CRIS options:                          CRIS-Opts.           (line   6)
  16300. * CRIS position-independent code:        CRIS-Opts.           (line  27)
  16301. * CRIS pseudo-op .arch:                  CRIS-Pseudos.        (line  45)
  16302. * CRIS pseudo-op .dword:                 CRIS-Pseudos.        (line  12)
  16303. * CRIS pseudo-op .syntax:                CRIS-Pseudos.        (line  17)
  16304. * CRIS pseudo-ops:                       CRIS-Pseudos.        (line   6)
  16305. * CRIS register names:                   CRIS-Regs.           (line   6)
  16306. * CRIS support:                          CRIS-Dependent.      (line   6)
  16307. * CRIS symbols in position-independent code: CRIS-Pic.        (line   6)
  16308. * ctbp register, V850:                   V850-Regs.           (line 131)
  16309. * ctoff pseudo-op, V850:                 V850 Opcodes.        (line 111)
  16310. * ctpc register, V850:                   V850-Regs.           (line 119)
  16311. * ctpsw register, V850:                  V850-Regs.           (line 122)
  16312. * current address:                       Dot.                 (line   6)
  16313. * current address, advancing:            Org.                 (line   6)
  16314. * D10V @word modifier:                   D10V-Word.           (line   6)
  16315. * D10V addressing modes:                 D10V-Addressing.     (line   6)
  16316. * D10V floating point:                   D10V-Float.          (line   6)
  16317. * D10V line comment character:           D10V-Chars.          (line   6)
  16318. * D10V opcode summary:                   D10V-Opcodes.        (line   6)
  16319. * D10V optimization:                     Overview.            (line 345)
  16320. * D10V options:                          D10V-Opts.           (line   6)
  16321. * D10V registers:                        D10V-Regs.           (line   6)
  16322. * D10V size modifiers:                   D10V-Size.           (line   6)
  16323. * D10V sub-instruction ordering:         D10V-Chars.          (line   6)
  16324. * D10V sub-instructions:                 D10V-Subs.           (line   6)
  16325. * D10V support:                          D10V-Dependent.      (line   6)
  16326. * D10V syntax:                           D10V-Syntax.         (line   6)
  16327. * D30V addressing modes:                 D30V-Addressing.     (line   6)
  16328. * D30V floating point:                   D30V-Float.          (line   6)
  16329. * D30V Guarded Execution:                D30V-Guarded.        (line   6)
  16330. * D30V line comment character:           D30V-Chars.          (line   6)
  16331. * D30V nops:                             Overview.            (line 353)
  16332. * D30V nops after 32-bit multiply:       Overview.            (line 356)
  16333. * D30V opcode summary:                   D30V-Opcodes.        (line   6)
  16334. * D30V optimization:                     Overview.            (line 350)
  16335. * D30V options:                          D30V-Opts.           (line   6)
  16336. * D30V registers:                        D30V-Regs.           (line   6)
  16337. * D30V size modifiers:                   D30V-Size.           (line   6)
  16338. * D30V sub-instruction ordering:         D30V-Chars.          (line   6)
  16339. * D30V sub-instructions:                 D30V-Subs.           (line   6)
  16340. * D30V support:                          D30V-Dependent.      (line   6)
  16341. * D30V syntax:                           D30V-Syntax.         (line   6)
  16342. * data alignment on SPARC:               Sparc-Aligned-Data.  (line   6)
  16343. * data and text sections, joining:       R.                   (line   6)
  16344. * data directive:                        Data.                (line   6)
  16345. * data directive, TIC54X:                TIC54X-Directives.   (line  61)
  16346. * data section:                          Ld Sections.         (line   9)
  16347. * data1 directive, M680x0:               M68K-Directives.     (line   9)
  16348. * data2 directive, M680x0:               M68K-Directives.     (line  12)
  16349. * datalabel, SH64:                       SH64-Addressing.     (line  16)
  16350. * dbpc register, V850:                   V850-Regs.           (line 125)
  16351. * dbpsw register, V850:                  V850-Regs.           (line 128)
  16352. * debuggers, and symbol order:           Symbols.             (line  10)
  16353. * debugging COFF symbols:                Def.                 (line   6)
  16354. * DEC syntax:                            PDP-11-Syntax.       (line   6)
  16355. * decimal integers:                      Integers.            (line  12)
  16356. * def directive:                         Def.                 (line   6)
  16357. * def directive, M88K:                   M88K Directives.     (line  36)
  16358. * def directive, TIC54X:                 TIC54X-Directives.   (line 103)
  16359. * density instructions:                  Density Instructions.
  16360.                                                               (line   6)
  16361. * dependency tracking:                   MD.                  (line   6)
  16362. * deprecated directives:                 Deprecated.          (line   6)
  16363. * desc directive:                        Desc.                (line   6)
  16364. * descriptor, of a.out symbol:           Symbol Desc.         (line   6)
  16365. * dfloat directive, M88K:                M88K Directives.     (line  13)
  16366. * dfloat directive, VAX:                 VAX-directives.      (line  10)
  16367. * difference tables altered:             Word.                (line  12)
  16368. * difference tables, warning:            K.                   (line   6)
  16369. * differences, mmixal:                   MMIX-mmixal.         (line   6)
  16370. * dim directive:                         Dim.                 (line   6)
  16371. * directives and instructions:           Statements.          (line  19)
  16372. * directives for PowerPC:                PowerPC-Pseudo.      (line   6)
  16373. * directives, M32R:                      M32R-Directives.     (line   6)
  16374. * directives, M680x0:                    M68K-Directives.     (line   6)
  16375. * directives, machine independent:       Pseudo Ops.          (line   6)
  16376. * directives, Xtensa:                    Xtensa Directives.   (line   6)
  16377. * directives, Z8000:                     Z8000 Directives.    (line   6)
  16378. * displacement sizing character, VAX:    VAX-operands.        (line  12)
  16379. * dollar local symbols:                  Symbol Names.        (line  93)
  16380. * dot (symbol):                          Dot.                 (line   6)
  16381. * double directive:                      Double.              (line   6)
  16382. * double directive, i386:                i386-Float.          (line  14)
  16383. * double directive, M680x0:              M68K-Float.          (line  14)
  16384. * double directive, M68HC11:             M68HC11-Float.       (line  14)
  16385. * double directive, TIC54X:              TIC54X-Directives.   (line  64)
  16386. * double directive, VAX:                 VAX-float.           (line  15)
  16387. * double directive, x86-64:              i386-Float.          (line  14)
  16388. * doublequote (\"):                      Strings.             (line  43)
  16389. * drlist directive, TIC54X:              TIC54X-Directives.   (line  73)
  16390. * drnolist directive, TIC54X:            TIC54X-Directives.   (line  73)
  16391. * dual directive, i860:                  Directives-i860.     (line   6)
  16392. * ECOFF sections:                        MIPS Object.         (line   6)
  16393. * ecr register, V850:                    V850-Regs.           (line 113)
  16394. * eight-byte integer:                    Quad.                (line   9)
  16395. * eipc register, V850:                   V850-Regs.           (line 101)
  16396. * eipsw register, V850:                  V850-Regs.           (line 104)
  16397. * eject directive:                       Eject.               (line   6)
  16398. * ELF symbol type:                       Type.                (line  25)
  16399. * else directive:                        Else.                (line   6)
  16400. * elseif directive:                      Elseif.              (line   6)
  16401. * empty expressions:                     Empty Exprs.         (line   6)
  16402. * emsg directive, TIC54X:                TIC54X-Directives.   (line  77)
  16403. * emulation:                             Overview.            (line 629)
  16404. * end directive:                         End.                 (line   6)
  16405. * enddual directive, i860:               Directives-i860.     (line  11)
  16406. * endef directive:                       Endef.               (line   6)
  16407. * endfunc directive:                     Endfunc.             (line   6)
  16408. * endianness, MIPS:                      Overview.            (line 550)
  16409. * endianness, PJ:                        Overview.            (line 457)
  16410. * endif directive:                       Endif.               (line   6)
  16411. * endloop directive, TIC54X:             TIC54X-Directives.   (line 143)
  16412. * endm directive:                        Macro.               (line  61)
  16413. * endm directive, TIC54X:                TIC54X-Directives.   (line 153)
  16414. * endstruct directive, TIC54X:           TIC54X-Directives.   (line 217)
  16415. * endunion directive, TIC54X:            TIC54X-Directives.   (line 251)
  16416. * ENTRY instructions, alignment:         Xtensa Automatic Alignment.
  16417.                                                               (line   6)
  16418. * environment settings, TIC54X:          TIC54X-Env.          (line   6)
  16419. * EOF, newline must precede:             Statements.          (line  13)
  16420. * ep register, V850:                     V850-Regs.           (line  95)
  16421. * equ directive:                         Equ.                 (line   6)
  16422. * equ directive, TIC54X:                 TIC54X-Directives.   (line 192)
  16423. * equiv directive:                       Equiv.               (line   6)
  16424. * err directive:                         Err.                 (line   6)
  16425. * error directive:                       Error.               (line   6)
  16426. * error messages:                        Errors.              (line   6)
  16427. * error on valid input:                  Bug Criteria.        (line  12)
  16428. * errors, caused by warnings:            W.                   (line  16)
  16429. * errors, continuing after:              Z.                   (line   6)
  16430. * ESA/390 floating point (IEEE):         ESA/390 Floating Point.
  16431.                                                               (line   6)
  16432. * ESA/390 support:                       ESA/390-Dependent.   (line   6)
  16433. * ESA/390 Syntax:                        ESA/390 Options.     (line   8)
  16434. * ESA/390-only directives:               ESA/390 Directives.  (line  12)
  16435. * escape codes, character:               Strings.             (line  15)
  16436. * eval directive, TIC54X:                TIC54X-Directives.   (line  24)
  16437. * even:                                  Z8000 Directives.    (line  58)
  16438. * even directive, M680x0:                M68K-Directives.     (line  15)
  16439. * even directive, TIC54X:                TIC54X-Directives.   (line   6)
  16440. * exitm directive:                       Macro.               (line  64)
  16441. * expr (internal section):               As Sections.         (line  17)
  16442. * expression arguments:                  Arguments.           (line   6)
  16443. * expressions:                           Expressions.         (line   6)
  16444. * expressions, comparison:               Infix Ops.           (line  57)
  16445. * expressions, empty:                    Empty Exprs.         (line   6)
  16446. * expressions, integer:                  Integer Exprs.       (line   6)
  16447. * extAuxRegister directive, ARC:         ARC Directives.      (line  18)
  16448. * extCondCode directive, ARC:            ARC Directives.      (line  41)
  16449. * extCoreRegister directive, ARC:        ARC Directives.      (line  53)
  16450. * extend directive M680x0:               M68K-Float.          (line  17)
  16451. * extend directive M68HC11:              M68HC11-Float.       (line  17)
  16452. * extended directive, i960:              Directives-i960.     (line  13)
  16453. * extern directive:                      Extern.              (line   6)
  16454. * extInstruction directive, ARC:         ARC Directives.      (line  78)
  16455. * fail directive:                        Fail.                (line   6)
  16456. * far_mode directive, TIC54X:            TIC54X-Directives.   (line  82)
  16457. * faster processing (-f):                f.                   (line   6)
  16458. * fatal signal:                          Bug Criteria.        (line   9)
  16459. * fclist directive, TIC54X:              TIC54X-Directives.   (line  87)
  16460. * fcnolist directive, TIC54X:            TIC54X-Directives.   (line  87)
  16461. * fepc register, V850:                   V850-Regs.           (line 107)
  16462. * fepsw register, V850:                  V850-Regs.           (line 110)
  16463. * ffloat directive, M88K:                M88K Directives.     (line  16)
  16464. * ffloat directive, VAX:                 VAX-directives.      (line  14)
  16465. * field directive, TIC54X:               TIC54X-Directives.   (line  91)
  16466. * file directive:                        File.                (line   6)
  16467. * file directive, AMD 29K:               AMD29K Directives.   (line  18)
  16468. * file directive, MSP 430:               MSP430 Directives.   (line   6)
  16469. * file name, logical:                    File.                (line   6)
  16470. * files, including:                      Include.             (line   6)
  16471. * files, input:                          Input Files.         (line   6)
  16472. * fill directive:                        Fill.                (line   6)
  16473. * filling memory <1>:                    Space.               (line   6)
  16474. * filling memory:                        Skip.                (line   6)
  16475. * FLIX syntax:                           Xtensa Syntax.       (line   6)
  16476. * float directive:                       Float.               (line   6)
  16477. * float directive, i386:                 i386-Float.          (line  14)
  16478. * float directive, M680x0:               M68K-Float.          (line  11)
  16479. * float directive, M68HC11:              M68HC11-Float.       (line  11)
  16480. * float directive, TIC54X:               TIC54X-Directives.   (line  64)
  16481. * float directive, VAX:                  VAX-float.           (line  15)
  16482. * float directive, x86-64:               i386-Float.          (line  14)
  16483. * floating point numbers:                Flonums.             (line   6)
  16484. * floating point numbers (double):       Double.              (line   6)
  16485. * floating point numbers (single) <1>:   Single.              (line   6)
  16486. * floating point numbers (single):       Float.               (line   6)
  16487. * floating point, Alpha (IEEE):          Alpha Floating Point.
  16488.                                                               (line   6)
  16489. * floating point, AMD 29K (IEEE):        AMD29K Floating Point.
  16490.                                                               (line   6)
  16491. * floating point, ARC (IEEE):            ARC Floating Point.  (line   6)
  16492. * floating point, ARM (IEEE):            ARM Floating Point.  (line   6)
  16493. * floating point, D10V:                  D10V-Float.          (line   6)
  16494. * floating point, D30V:                  D30V-Float.          (line   6)
  16495. * floating point, ESA/390 (IEEE):        ESA/390 Floating Point.
  16496.                                                               (line   6)
  16497. * floating point, H8/300 (IEEE):         H8/300 Floating Point.
  16498.                                                               (line   6)
  16499. * floating point, H8/500 (IEEE):         H8/500 Floating Point.
  16500.                                                               (line   6)
  16501. * floating point, HPPA (IEEE):           HPPA Floating Point. (line   6)
  16502. * floating point, i386:                  i386-Float.          (line   6)
  16503. * floating point, i960 (IEEE):           Floating Point-i960. (line   6)
  16504. * floating point, M680x0:                M68K-Float.          (line   6)
  16505. * floating point, M68HC11:               M68HC11-Float.       (line   6)
  16506. * floating point, MSP 430 (IEEE):        MSP430 Floating Point.
  16507.                                                               (line   6)
  16508. * floating point, SH (IEEE):             SH Floating Point.   (line   6)
  16509. * floating point, SPARC (IEEE):          Sparc-Float.         (line   6)
  16510. * floating point, V850 (IEEE):           V850 Floating Point. (line   6)
  16511. * floating point, VAX:                   VAX-float.           (line   6)
  16512. * floating point, x86-64:                i386-Float.          (line   6)
  16513. * flonums:                               Flonums.             (line   6)
  16514. * force_thumb directive, ARM:            ARM Directives.      (line  39)
  16515. * format of error messages:              Errors.              (line  24)
  16516. * format of warning messages:            Errors.              (line  12)
  16517. * formfeed (\f):                         Strings.             (line  18)
  16518. * func directive:                        Func.                (line   6)
  16519. * functions, in expressions:             Operators.           (line   6)
  16520. * gbr960, i960 postprocessor:            Options-i960.        (line  40)
  16521. * gfloat directive, VAX:                 VAX-directives.      (line  18)
  16522. * global:                                Z8000 Directives.    (line  21)
  16523. * global directive:                      Global.              (line   6)
  16524. * global directive, TIC54X:              TIC54X-Directives.   (line 103)
  16525. * gp register, MIPS:                     MIPS Object.         (line  11)
  16526. * gp register, V850:                     V850-Regs.           (line  17)
  16527. * grouping data:                         Sub-Sections.        (line   6)
  16528. * H8/300 addressing modes:               H8/300-Addressing.   (line   6)
  16529. * H8/300 floating point (IEEE):          H8/300 Floating Point.
  16530.                                                               (line   6)
  16531. * H8/300 line comment character:         H8/300-Chars.        (line   6)
  16532. * H8/300 line separator:                 H8/300-Chars.        (line   8)
  16533. * H8/300 machine directives (none):      H8/300 Directives.   (line   6)
  16534. * H8/300 opcode summary:                 H8/300 Opcodes.      (line   6)
  16535. * H8/300 options (none):                 H8/300 Options.      (line   6)
  16536. * H8/300 registers:                      H8/300-Regs.         (line   6)
  16537. * H8/300 size suffixes:                  H8/300 Opcodes.      (line 163)
  16538. * H8/300 support:                        H8/300-Dependent.    (line   6)
  16539. * H8/300H, assembling for:               H8/300 Directives.   (line   8)
  16540. * H8/500 addressing modes:               H8/500-Addressing.   (line   6)
  16541. * H8/500 floating point (IEEE):          H8/500 Floating Point.
  16542.                                                               (line   6)
  16543. * H8/500 line comment character:         H8/500-Chars.        (line   6)
  16544. * H8/500 line separator:                 H8/500-Chars.        (line   8)
  16545. * H8/500 machine directives (none):      H8/500 Directives.   (line   6)
  16546. * H8/500 opcode summary:                 H8/500 Opcodes.      (line   6)
  16547. * H8/500 options (none):                 H8/500 Options.      (line   6)
  16548. * H8/500 registers:                      H8/500-Regs.         (line   6)
  16549. * H8/500 support:                        H8/500-Dependent.    (line   6)
  16550. * half directive, ARC:                   ARC Directives.      (line 156)
  16551. * half directive, M88K:                  M88K Directives.     (line  19)
  16552. * half directive, SPARC:                 Sparc-Directives.    (line  17)
  16553. * half directive, TIC54X:                TIC54X-Directives.   (line 111)
  16554. * hex character code (\XD...):           Strings.             (line  36)
  16555. * hexadecimal integers:                  Integers.            (line  15)
  16556. * hfloat directive, VAX:                 VAX-directives.      (line  22)
  16557. * hi pseudo-op, V850:                    V850 Opcodes.        (line  33)
  16558. * hi0 pseudo-op, V850:                   V850 Opcodes.        (line  10)
  16559. * hidden directive:                      Hidden.              (line   6)
  16560. * high directive, M32R:                  M32R-Directives.     (line  18)
  16561. * hilo pseudo-op, V850:                  V850 Opcodes.        (line  55)
  16562. * HPPA directives not supported:         HPPA Directives.     (line  11)
  16563. * HPPA floating point (IEEE):            HPPA Floating Point. (line   6)
  16564. * HPPA Syntax:                           HPPA Options.        (line   8)
  16565. * HPPA-only directives:                  HPPA Directives.     (line  24)
  16566. * hword directive:                       hword.               (line   6)
  16567. * i370 support:                          ESA/390-Dependent.   (line   6)
  16568. * i386 16-bit code:                      i386-16bit.          (line   6)
  16569. * i386 arch directive:                   i386-Arch.           (line   6)
  16570. * i386 att_syntax pseudo op:             i386-Syntax.         (line   6)
  16571. * i386 conversion instructions:          i386-Mnemonics.      (line  32)
  16572. * i386 floating point:                   i386-Float.          (line   6)
  16573. * i386 immediate operands:               i386-Syntax.         (line  15)
  16574. * i386 instruction naming:               i386-Mnemonics.      (line   6)
  16575. * i386 instruction prefixes:             i386-Prefixes.       (line   6)
  16576. * i386 intel_syntax pseudo op:           i386-Syntax.         (line   6)
  16577. * i386 jump optimization:                i386-Jumps.          (line   6)
  16578. * i386 jump, call, return:               i386-Syntax.         (line  38)
  16579. * i386 jump/call operands:               i386-Syntax.         (line  15)
  16580. * i386 memory references:                i386-Memory.         (line   6)
  16581. * i386 mul, imul instructions:           i386-Notes.          (line   6)
  16582. * i386 options:                          i386-Options.        (line   6)
  16583. * i386 register operands:                i386-Syntax.         (line  15)
  16584. * i386 registers:                        i386-Regs.           (line   6)
  16585. * i386 sections:                         i386-Syntax.         (line  44)
  16586. * i386 size suffixes:                    i386-Syntax.         (line  29)
  16587. * i386 source, destination operands:     i386-Syntax.         (line  22)
  16588. * i386 support:                          i386-Dependent.      (line   6)
  16589. * i386 syntax compatibility:             i386-Syntax.         (line   6)
  16590. * i80306 support:                        i386-Dependent.      (line   6)
  16591. * i860 machine directives:               Directives-i860.     (line   6)
  16592. * i860 opcodes:                          Opcodes for i860.    (line   6)
  16593. * i860 support:                          i860-Dependent.      (line   6)
  16594. * i960 architecture options:             Options-i960.        (line   6)
  16595. * i960 branch recording:                 Options-i960.        (line  22)
  16596. * i960 callj pseudo-opcode:              callj-i960.          (line   6)
  16597. * i960 compare and jump expansions:      Compare-and-branch-i960.
  16598.                                                               (line  13)
  16599. * i960 compare/branch instructions:      Compare-and-branch-i960.
  16600.                                                               (line   6)
  16601. * i960 floating point (IEEE):            Floating Point-i960. (line   6)
  16602. * i960 machine directives:               Directives-i960.     (line   6)
  16603. * i960 opcodes:                          Opcodes for i960.    (line   6)
  16604. * i960 options:                          Options-i960.        (line   6)
  16605. * i960 support:                          i960-Dependent.      (line   6)
  16606. * IA-64 line comment character:          IA-64-Chars.         (line   6)
  16607. * IA-64 line separator:                  IA-64-Chars.         (line   8)
  16608. * IA-64 options:                         IA-64 Options.       (line   6)
  16609. * IA-64 Processor-status-Register bit names: IA-64-Bits.      (line   6)
  16610. * IA-64 registers:                       IA-64-Regs.          (line   6)
  16611. * IA-64 support:                         IA-64-Dependent.     (line   6)
  16612. * IA-64 Syntax:                          IA-64 Options.       (line  90)
  16613. * ident directive:                       Ident.               (line   6)
  16614. * identifiers, AMD 29K:                  AMD29K-Chars.        (line   8)
  16615. * identifiers, ARM:                      ARM-Chars.           (line  15)
  16616. * identifiers, MSP 430:                  MSP430-Chars.        (line   8)
  16617. * if directive:                          If.                  (line   6)
  16618. * ifc directive:                         If.                  (line  21)
  16619. * ifdef directive:                       If.                  (line  16)
  16620. * ifeq directive:                        If.                  (line  29)
  16621. * ifeqs directive:                       If.                  (line  32)
  16622. * ifge directive:                        If.                  (line  36)
  16623. * ifgt directive:                        If.                  (line  40)
  16624. * ifle directive:                        If.                  (line  44)
  16625. * iflt directive:                        If.                  (line  48)
  16626. * ifnc directive:                        If.                  (line  52)
  16627. * ifndef directive:                      If.                  (line  56)
  16628. * ifne directive:                        If.                  (line  63)
  16629. * ifnes directive:                       If.                  (line  67)
  16630. * ifnotdef directive:                    If.                  (line  56)
  16631. * immediate character, ARM:              ARM-Chars.           (line  13)
  16632. * immediate character, M680x0:           M68K-Chars.          (line   6)
  16633. * immediate character, VAX:              VAX-operands.        (line   6)
  16634. * immediate fields, relaxation:          Xtensa Immediate Relaxation.
  16635.                                                               (line   6)
  16636. * immediate operands, i386:              i386-Syntax.         (line  15)
  16637. * immediate operands, x86-64:            i386-Syntax.         (line  15)
  16638. * imul instruction, i386:                i386-Notes.          (line   6)
  16639. * imul instruction, x86-64:              i386-Notes.          (line   6)
  16640. * incbin directive:                      Incbin.              (line   6)
  16641. * include directive:                     Include.             (line   6)
  16642. * include directive search path:         I.                   (line   6)
  16643. * indirect character, VAX:               VAX-operands.        (line   9)
  16644. * infix operators:                       Infix Ops.           (line   6)
  16645. * inhibiting interrupts, i386:           i386-Prefixes.       (line  36)
  16646. * input:                                 Input Files.         (line   6)
  16647. * input file linenumbers:                Input Files.         (line  35)
  16648. * instruction expansion, CRIS:           CRIS-Expand.         (line   6)
  16649. * instruction expansion, MMIX:           MMIX-Expand.         (line   6)
  16650. * instruction naming, i386:              i386-Mnemonics.      (line   6)
  16651. * instruction naming, x86-64:            i386-Mnemonics.      (line   6)
  16652. * instruction prefixes, i386:            i386-Prefixes.       (line   6)
  16653. * instruction set, M680x0:               M68K-opcodes.        (line   6)
  16654. * instruction set, M68HC11:              M68HC11-opcodes.     (line   6)
  16655. * instruction summary, D10V:             D10V-Opcodes.        (line   6)
  16656. * instruction summary, D30V:             D30V-Opcodes.        (line   6)
  16657. * instruction summary, H8/300:           H8/300 Opcodes.      (line   6)
  16658. * instruction summary, H8/500:           H8/500 Opcodes.      (line   6)
  16659. * instruction summary, SH:               SH Opcodes.          (line   6)
  16660. * instruction summary, SH64:             SH64 Opcodes.        (line   6)
  16661. * instruction summary, Z8000:            Z8000 Opcodes.       (line   6)
  16662. * instructions and directives:           Statements.          (line  19)
  16663. * int directive:                         Int.                 (line   6)
  16664. * int directive, H8/300:                 H8/300 Directives.   (line   6)
  16665. * int directive, H8/500:                 H8/500 Directives.   (line   6)
  16666. * int directive, i386:                   i386-Float.          (line  21)
  16667. * int directive, TIC54X:                 TIC54X-Directives.   (line 111)
  16668. * int directive, x86-64:                 i386-Float.          (line  21)
  16669. * integer expressions:                   Integer Exprs.       (line   6)
  16670. * integer, 16-byte:                      Octa.                (line   6)
  16671. * integer, 8-byte:                       Quad.                (line   9)
  16672. * integers:                              Integers.            (line   6)
  16673. * integers, 16-bit:                      hword.               (line   6)
  16674. * integers, 32-bit:                      Int.                 (line   6)
  16675. * integers, binary:                      Integers.            (line   6)
  16676. * integers, decimal:                     Integers.            (line  12)
  16677. * integers, hexadecimal:                 Integers.            (line  15)
  16678. * integers, octal:                       Integers.            (line   9)
  16679. * integers, one byte:                    Byte.                (line   6)
  16680. * intel_syntax pseudo op, i386:          i386-Syntax.         (line   6)
  16681. * intel_syntax pseudo op, x86-64:        i386-Syntax.         (line   6)
  16682. * internal assembler sections:           As Sections.         (line   6)
  16683. * internal directive:                    Internal.            (line   6)
  16684. * invalid input:                         Bug Criteria.        (line  14)
  16685. * invocation summary:                    Overview.            (line   6)
  16686. * IP2K architecture options:             IP2K-Opts.           (line   9)
  16687. * IP2K options:                          IP2K-Opts.           (line   6)
  16688. * IP2K support:                          IP2K-Dependent.      (line   6)
  16689. * irp directive:                         Irp.                 (line   6)
  16690. * irpc directive:                        Irpc.                (line   6)
  16691. * ISA options, SH64:                     SH64 Options.        (line   6)
  16692. * joining text and data sections:        R.                   (line   6)
  16693. * jump instructions, i386:               i386-Mnemonics.      (line  51)
  16694. * jump instructions, x86-64:             i386-Mnemonics.      (line  51)
  16695. * jump optimization, i386:               i386-Jumps.          (line   6)
  16696. * jump optimization, x86-64:             i386-Jumps.          (line   6)
  16697. * jump/call operands, i386:              i386-Syntax.         (line  15)
  16698. * jump/call operands, x86-64:            i386-Syntax.         (line  15)
  16699. * L16SI instructions, relaxation:        Xtensa Immediate Relaxation.
  16700.                                                               (line  23)
  16701. * L16UI instructions, relaxation:        Xtensa Immediate Relaxation.
  16702.                                                               (line  23)
  16703. * L32I instructions, relaxation:         Xtensa Immediate Relaxation.
  16704.                                                               (line  23)
  16705. * L8UI instructions, relaxation:         Xtensa Immediate Relaxation.
  16706.                                                               (line  23)
  16707. * label (:):                             Statements.          (line  30)
  16708. * label directive, TIC54X:               TIC54X-Directives.   (line 123)
  16709. * labels:                                Labels.              (line   6)
  16710. * lcomm directive:                       Lcomm.               (line   6)
  16711. * ld:                                    Object.              (line  16)
  16712. * ldouble directive M680x0:              M68K-Float.          (line  17)
  16713. * ldouble directive M68HC11:             M68HC11-Float.       (line  17)
  16714. * ldouble directive, TIC54X:             TIC54X-Directives.   (line  64)
  16715. * LDR reg,=<label> pseudo op, ARM:       ARM Opcodes.         (line  15)
  16716. * leafproc directive, i960:              Directives-i960.     (line  18)
  16717. * length directive, TIC54X:              TIC54X-Directives.   (line 127)
  16718. * length of symbols:                     Symbol Intro.        (line  14)
  16719. * lflags directive (ignored):            Lflags.              (line   6)
  16720. * line comment character:                Comments.            (line  19)
  16721. * line comment character, Alpha:         Alpha-Chars.         (line   6)
  16722. * line comment character, AMD 29K:       AMD29K-Chars.        (line   6)
  16723. * line comment character, ARM:           ARM-Chars.           (line   6)
  16724. * line comment character, D10V:          D10V-Chars.          (line   6)
  16725. * line comment character, D30V:          D30V-Chars.          (line   6)
  16726. * line comment character, H8/300:        H8/300-Chars.        (line   6)
  16727. * line comment character, H8/500:        H8/500-Chars.        (line   6)
  16728. * line comment character, IA-64:         IA-64-Chars.         (line   6)
  16729. * line comment character, M680x0:        M68K-Chars.          (line   6)
  16730. * line comment character, MSP 430:       MSP430-Chars.        (line   6)
  16731. * line comment character, SH:            SH-Chars.            (line   6)
  16732. * line comment character, SH64:          SH64-Chars.          (line   6)
  16733. * line comment character, V850:          V850-Chars.          (line   6)
  16734. * line comment character, Z8000:         Z8000-Chars.         (line   6)
  16735. * line comment characters, CRIS:         CRIS-Chars.          (line   6)
  16736. * line comment characters, MMIX:         MMIX-Chars.          (line   6)
  16737. * line directive:                        Line.                (line   6)
  16738. * line directive, AMD 29K:               AMD29K Directives.   (line  26)
  16739. * line directive, MSP 430:               MSP430 Directives.   (line  14)
  16740. * line numbers, in input files:          Input Files.         (line  35)
  16741. * line numbers, in warnings/errors:      Errors.              (line  16)
  16742. * line separator character:              Statements.          (line   6)
  16743. * line separator, Alpha:                 Alpha-Chars.         (line   8)
  16744. * line separator, ARM:                   ARM-Chars.           (line  10)
  16745. * line separator, H8/300:                H8/300-Chars.        (line   8)
  16746. * line separator, H8/500:                H8/500-Chars.        (line   8)
  16747. * line separator, IA-64:                 IA-64-Chars.         (line   8)
  16748. * line separator, SH:                    SH-Chars.            (line   8)
  16749. * line separator, SH64:                  SH64-Chars.          (line   8)
  16750. * line separator, Z8000:                 Z8000-Chars.         (line   8)
  16751. * lines starting with #:                 Comments.            (line  39)
  16752. * linker:                                Object.              (line  16)
  16753. * linker, and assembler:                 Secs Background.     (line  10)
  16754. * linkonce directive:                    Linkonce.            (line   6)
  16755. * list directive:                        List.                (line   6)
  16756. * list directive, TIC54X:                TIC54X-Directives.   (line 131)
  16757. * listing control, turning off:          Nolist.              (line   6)
  16758. * listing control, turning on:           List.                (line   6)
  16759. * listing control: new page:             Eject.               (line   6)
  16760. * listing control: paper size:           Psize.               (line   6)
  16761. * listing control: subtitle:             Sbttl.               (line   6)
  16762. * listing control: title line:           Title.               (line   6)
  16763. * listings, enabling:                    a.                   (line   6)
  16764. * literal directive:                     Literal Directive.   (line   6)
  16765. * literal_position directive:            Literal Position Directive.
  16766.                                                               (line   6)
  16767. * literal_prefix directive:              Literal Prefix Directive.
  16768.                                                               (line   6)
  16769. * little endian output, MIPS:            Overview.            (line 553)
  16770. * little endian output, PJ:              Overview.            (line 460)
  16771. * little-endian output, MIPS:            MIPS Opts.           (line  13)
  16772. * ln directive:                          Ln.                  (line   6)
  16773. * lo pseudo-op, V850:                    V850 Opcodes.        (line  22)
  16774. * local common symbols:                  Lcomm.               (line   6)
  16775. * local labels, retaining in output:     L.                   (line   6)
  16776. * local symbol names:                    Symbol Names.        (line  24)
  16777. * location counter:                      Dot.                 (line   6)
  16778. * location counter, advancing:           Org.                 (line   6)
  16779. * logical file name:                     File.                (line   6)
  16780. * logical line number:                   Line.                (line   6)
  16781. * logical line numbers:                  Comments.            (line  39)
  16782. * long directive:                        Long.                (line   6)
  16783. * long directive, ARC:                   ARC Directives.      (line 159)
  16784. * long directive, i386:                  i386-Float.          (line  21)
  16785. * long directive, TIC54X:                TIC54X-Directives.   (line 135)
  16786. * long directive, x86-64:                i386-Float.          (line  21)
  16787. * longcall pseudo-op, V850:              V850 Opcodes.        (line 123)
  16788. * longcalls directive:                   Longcalls Directive. (line   6)
  16789. * longjump pseudo-op, V850:              V850 Opcodes.        (line 129)
  16790. * loop directive, TIC54X:                TIC54X-Directives.   (line 143)
  16791. * LOOP instructions, alignment:          Xtensa Automatic Alignment.
  16792.                                                               (line   6)
  16793. * low directive, M32R:                   M32R-Directives.     (line   9)
  16794. * lp register, V850:                     V850-Regs.           (line  98)
  16795. * lval:                                  Z8000 Directives.    (line  27)
  16796. * M32R architecture options:             M32R-Opts.           (line   9)
  16797. * M32R directives:                       M32R-Directives.     (line   6)
  16798. * M32R options:                          M32R-Opts.           (line   6)
  16799. * M32R support:                          M32R-Dependent.      (line   6)
  16800. * M32R warnings:                         M32R-Warnings.       (line   6)
  16801. * M680x0 addressing modes:               M68K-Syntax.         (line  21)
  16802. * M680x0 architecture options:           M68K-Opts.           (line  73)
  16803. * M680x0 branch improvement:             M68K-Branch.         (line   6)
  16804. * M680x0 directives:                     M68K-Directives.     (line   6)
  16805. * M680x0 floating point:                 M68K-Float.          (line   6)
  16806. * M680x0 immediate character:            M68K-Chars.          (line   6)
  16807. * M680x0 line comment character:         M68K-Chars.          (line   6)
  16808. * M680x0 opcodes:                        M68K-opcodes.        (line   6)
  16809. * M680x0 options:                        M68K-Opts.           (line   6)
  16810. * M680x0 pseudo-opcodes:                 M68K-Branch.         (line   6)
  16811. * M680x0 size modifiers:                 M68K-Syntax.         (line   8)
  16812. * M680x0 support:                        M68K-Dependent.      (line   6)
  16813. * M680x0 syntax:                         M68K-Syntax.         (line   8)
  16814. * M68HC11 addressing modes:              M68HC11-Syntax.      (line  17)
  16815. * M68HC11 and M68HC12 support:           M68HC11-Dependent.   (line   6)
  16816. * M68HC11 assembler directive .far:      M68HC11-Directives.  (line  20)
  16817. * M68HC11 assembler directive .interrupt: M68HC11-Directives. (line  26)
  16818. * M68HC11 assembler directive .mode:     M68HC11-Directives.  (line  16)
  16819. * M68HC11 assembler directive .relax:    M68HC11-Directives.  (line  10)
  16820. * M68HC11 assembler directive .xrefb:    M68HC11-Directives.  (line  31)
  16821. * M68HC11 assembler directives:          M68HC11-Directives.  (line   6)
  16822. * M68HC11 branch improvement:            M68HC11-Branch.      (line   6)
  16823. * M68HC11 floating point:                M68HC11-Float.       (line   6)
  16824. * M68HC11 modifiers:                     M68HC11-Modifiers.   (line   6)
  16825. * M68HC11 opcodes:                       M68HC11-opcodes.     (line   6)
  16826. * M68HC11 options:                       M68HC11-Opts.        (line   6)
  16827. * M68HC11 pseudo-opcodes:                M68HC11-Branch.      (line   6)
  16828. * M68HC11 syntax:                        M68HC11-Syntax.      (line   6)
  16829. * M68HC12 assembler directives:          M68HC11-Directives.  (line   6)
  16830. * M88K support:                          M88K-Dependent.      (line   6)
  16831. * machine dependencies:                  Machine Dependencies.
  16832.                                                               (line   6)
  16833. * machine directives, AMD 29K:           AMD29K Directives.   (line   6)
  16834. * machine directives, ARC:               ARC Directives.      (line   6)
  16835. * machine directives, ARM:               ARM Directives.      (line   6)
  16836. * machine directives, H8/300 (none):     H8/300 Directives.   (line   6)
  16837. * machine directives, H8/500 (none):     H8/500 Directives.   (line   6)
  16838. * machine directives, i860:              Directives-i860.     (line   6)
  16839. * machine directives, i960:              Directives-i960.     (line   6)
  16840. * machine directives, MSP 430:           MSP430 Directives.   (line   6)
  16841. * machine directives, SH:                SH Directives.       (line   6)
  16842. * machine directives, SH64:              SH64 Directives.     (line   9)
  16843. * machine directives, SPARC:             Sparc-Directives.    (line   6)
  16844. * machine directives, TIC54X:            TIC54X-Directives.   (line   6)
  16845. * machine directives, V850:              V850 Directives.     (line   6)
  16846. * machine directives, VAX:               VAX-directives.      (line   6)
  16847. * machine independent directives:        Pseudo Ops.          (line   6)
  16848. * machine instructions (not covered):    Manual.              (line  14)
  16849. * machine-independent syntax:            Syntax.              (line   6)
  16850. * macro directive:                       Macro.               (line  28)
  16851. * macro directive, TIC54X:               TIC54X-Directives.   (line 153)
  16852. * macros:                                Macro.               (line   6)
  16853. * Macros, AMD 29K:                       AMD29K-Macros.       (line   6)
  16854. * macros, count executed:                Macro.               (line  66)
  16855. * Macros, MSP 430:                       MSP430-Macros.       (line   6)
  16856. * macros, TIC54X:                        TIC54X-Macros.       (line   6)
  16857. * make rules:                            MD.                  (line   6)
  16858. * manual, structure and purpose:         Manual.              (line   6)
  16859. * math builtins, TIC54X:                 TIC54X-Builtins.     (line   6)
  16860. * Maximum number of continuation lines:  listing.             (line  33)
  16861. * memory references, i386:               i386-Memory.         (line   6)
  16862. * memory references, x86-64:             i386-Memory.         (line   6)
  16863. * memory-mapped registers, TIC54X:       TIC54X-MMRegs.       (line   6)
  16864. * merging text and data sections:        R.                   (line   6)
  16865. * messages from assembler:               Errors.              (line   6)
  16866. * minus, permitted arguments:            Infix Ops.           (line  51)
  16867. * MIPS architecture options:             MIPS Opts.           (line  20)
  16868. * MIPS big-endian output:                MIPS Opts.           (line  13)
  16869. * MIPS debugging directives:             MIPS Stabs.          (line   6)
  16870. * MIPS ECOFF sections:                   MIPS Object.         (line   6)
  16871. * MIPS endianness:                       Overview.            (line 550)
  16872. * MIPS ISA:                              Overview.            (line 556)
  16873. * MIPS ISA override:                     MIPS ISA.            (line   6)
  16874. * MIPS little-endian output:             MIPS Opts.           (line  13)
  16875. * MIPS MDMX instruction generation override: MIPS ASE instruction generation overrides.
  16876.                                                               (line  11)
  16877. * MIPS MIPS-3D instruction generation override: MIPS ASE instruction generation overrides.
  16878.                                                               (line   6)
  16879. * MIPS option stack:                     MIPS option stack.   (line   6)
  16880. * MIPS processor:                        MIPS-Dependent.      (line   6)
  16881. * MIT:                                   M68K-Syntax.         (line   6)
  16882. * mlib directive, TIC54X:                TIC54X-Directives.   (line 159)
  16883. * mlist directive, TIC54X:               TIC54X-Directives.   (line 164)
  16884. * MMIX assembler directive BSPEC:        MMIX-Pseudos.        (line 131)
  16885. * MMIX assembler directive BYTE:         MMIX-Pseudos.        (line  97)
  16886. * MMIX assembler directive ESPEC:        MMIX-Pseudos.        (line 131)
  16887. * MMIX assembler directive GREG:         MMIX-Pseudos.        (line  50)
  16888. * MMIX assembler directive IS:           MMIX-Pseudos.        (line  42)
  16889. * MMIX assembler directive LOC:          MMIX-Pseudos.        (line   7)
  16890. * MMIX assembler directive LOCAL:        MMIX-Pseudos.        (line  28)
  16891. * MMIX assembler directive OCTA:         MMIX-Pseudos.        (line 108)
  16892. * MMIX assembler directive PREFIX:       MMIX-Pseudos.        (line 120)
  16893. * MMIX assembler directive TETRA:        MMIX-Pseudos.        (line 108)
  16894. * MMIX assembler directive WYDE:         MMIX-Pseudos.        (line 108)
  16895. * MMIX assembler directives:             MMIX-Pseudos.        (line   6)
  16896. * MMIX line comment characters:          MMIX-Chars.          (line   6)
  16897. * MMIX options:                          MMIX-Opts.           (line   6)
  16898. * MMIX pseudo-op BSPEC:                  MMIX-Pseudos.        (line 131)
  16899. * MMIX pseudo-op BYTE:                   MMIX-Pseudos.        (line  97)
  16900. * MMIX pseudo-op ESPEC:                  MMIX-Pseudos.        (line 131)
  16901. * MMIX pseudo-op GREG:                   MMIX-Pseudos.        (line  50)
  16902. * MMIX pseudo-op IS:                     MMIX-Pseudos.        (line  42)
  16903. * MMIX pseudo-op LOC:                    MMIX-Pseudos.        (line   7)
  16904. * MMIX pseudo-op LOCAL:                  MMIX-Pseudos.        (line  28)
  16905. * MMIX pseudo-op OCTA:                   MMIX-Pseudos.        (line 108)
  16906. * MMIX pseudo-op PREFIX:                 MMIX-Pseudos.        (line 120)
  16907. * MMIX pseudo-op TETRA:                  MMIX-Pseudos.        (line 108)
  16908. * MMIX pseudo-op WYDE:                   MMIX-Pseudos.        (line 108)
  16909. * MMIX pseudo-ops:                       MMIX-Pseudos.        (line   6)
  16910. * MMIX register names:                   MMIX-Regs.           (line   6)
  16911. * MMIX support:                          MMIX-Dependent.      (line   6)
  16912. * mmixal differences:                    MMIX-mmixal.         (line   6)
  16913. * mmregs directive, TIC54X:              TIC54X-Directives.   (line 170)
  16914. * mmsg directive, TIC54X:                TIC54X-Directives.   (line  77)
  16915. * MMX, i386:                             i386-SIMD.           (line   6)
  16916. * MMX, x86-64:                           i386-SIMD.           (line   6)
  16917. * mnemonic suffixes, i386:               i386-Syntax.         (line  29)
  16918. * mnemonic suffixes, x86-64:             i386-Syntax.         (line  29)
  16919. * mnemonics for opcodes, VAX:            VAX-opcodes.         (line   6)
  16920. * mnemonics, D10V:                       D10V-Opcodes.        (line   6)
  16921. * mnemonics, D30V:                       D30V-Opcodes.        (line   6)
  16922. * mnemonics, H8/300:                     H8/300 Opcodes.      (line   6)
  16923. * mnemonics, H8/500:                     H8/500 Opcodes.      (line   6)
  16924. * mnemonics, SH:                         SH Opcodes.          (line   6)
  16925. * mnemonics, SH64:                       SH64 Opcodes.        (line   6)
  16926. * mnemonics, Z8000:                      Z8000 Opcodes.       (line   6)
  16927. * mnolist directive, TIC54X:             TIC54X-Directives.   (line 164)
  16928. * Motorola syntax for the 680x0:         M68K-Moto-Syntax.    (line   6)
  16929. * MOVI instructions, relaxation:         Xtensa Immediate Relaxation.
  16930.                                                               (line  12)
  16931. * MRI compatibility mode:                M.                   (line   6)
  16932. * mri directive:                         MRI.                 (line   6)
  16933. * MRI mode, temporarily:                 MRI.                 (line   6)
  16934. * MSP 430 floating point (IEEE):         MSP430 Floating Point.
  16935.                                                               (line   6)
  16936. * MSP 430 identifiers:                   MSP430-Chars.        (line   8)
  16937. * MSP 430 line comment character:        MSP430-Chars.        (line   6)
  16938. * MSP 430 machine directives:            MSP430 Directives.   (line   6)
  16939. * MSP 430 macros:                        MSP430-Macros.       (line   6)
  16940. * MSP 430 opcodes:                       MSP430 Opcodes.      (line   6)
  16941. * MSP 430 options (none):                MSP430 Options.      (line   6)
  16942. * MSP 430 profiling capability:          MSP430 Profiling Capability.
  16943.                                                               (line   6)
  16944. * MSP 430 register names:                MSP430-Regs.         (line   6)
  16945. * MSP 430 support:                       MSP430-Dependent.    (line   6)
  16946. * MSP430 Assembler Extensions:           MSP430-Ext.          (line   6)
  16947. * mul instruction, i386:                 i386-Notes.          (line   6)
  16948. * mul instruction, x86-64:               i386-Notes.          (line   6)
  16949. * name:                                  Z8000 Directives.    (line  18)
  16950. * named section:                         Section.             (line   6)
  16951. * named sections:                        Ld Sections.         (line   8)
  16952. * names, symbol:                         Symbol Names.        (line   6)
  16953. * naming object file:                    o.                   (line   6)
  16954. * new page, in listings:                 Eject.               (line   6)
  16955. * newblock directive, TIC54X:            TIC54X-Directives.   (line 176)
  16956. * newline (\n):                          Strings.             (line  21)
  16957. * newline, required at file end:         Statements.          (line  13)
  16958. * no-absolute-literals directive:        Absolute Literals Directive.
  16959.                                                               (line   6)
  16960. * no-longcalls directive:                Longcalls Directive. (line   6)
  16961. * no-schedule directive:                 Schedule Directive.  (line   6)
  16962. * no-transform directive:                Transform Directive. (line   6)
  16963. * nolist directive:                      Nolist.              (line   6)
  16964. * nolist directive, TIC54X:              TIC54X-Directives.   (line 131)
  16965. * NOP pseudo op, ARM:                    ARM Opcodes.         (line   9)
  16966. * notes for Alpha:                       Alpha Notes.         (line   6)
  16967. * null-terminated strings:               Asciz.               (line   6)
  16968. * number constants:                      Numbers.             (line   6)
  16969. * number of macros executed:             Macro.               (line  66)
  16970. * numbered subsections:                  Sub-Sections.        (line   6)
  16971. * numbers, 16-bit:                       hword.               (line   6)
  16972. * numeric values:                        Expressions.         (line   6)
  16973. * nword directive, SPARC:                Sparc-Directives.    (line  20)
  16974. * object file:                           Object.              (line   6)
  16975. * object file format:                    Object Formats.      (line   6)
  16976. * object file name:                      o.                   (line   6)
  16977. * object file, after errors:             Z.                   (line   6)
  16978. * obsolescent directives:                Deprecated.          (line   6)
  16979. * octa directive:                        Octa.                (line   6)
  16980. * octal character code (\DDD):           Strings.             (line  30)
  16981. * octal integers:                        Integers.            (line   9)
  16982. * offset directive, V850:                V850 Directives.     (line   6)
  16983. * opcode mnemonics, VAX:                 VAX-opcodes.         (line   6)
  16984. * opcode names, Xtensa:                  Xtensa Opcodes.      (line   6)
  16985. * opcode summary, D10V:                  D10V-Opcodes.        (line   6)
  16986. * opcode summary, D30V:                  D30V-Opcodes.        (line   6)
  16987. * opcode summary, H8/300:                H8/300 Opcodes.      (line   6)
  16988. * opcode summary, H8/500:                H8/500 Opcodes.      (line   6)
  16989. * opcode summary, SH:                    SH Opcodes.          (line   6)
  16990. * opcode summary, SH64:                  SH64 Opcodes.        (line   6)
  16991. * opcode summary, Z8000:                 Z8000 Opcodes.       (line   6)
  16992. * opcodes for AMD 29K:                   AMD29K Opcodes.      (line   6)
  16993. * opcodes for ARC:                       ARC Opcodes.         (line   6)
  16994. * opcodes for ARM:                       ARM Opcodes.         (line   6)
  16995. * opcodes for MSP 430:                   MSP430 Opcodes.      (line   6)
  16996. * opcodes for V850:                      V850 Opcodes.        (line   6)
  16997. * opcodes, i860:                         Opcodes for i860.    (line   6)
  16998. * opcodes, i960:                         Opcodes for i960.    (line   6)
  16999. * opcodes, M680x0:                       M68K-opcodes.        (line   6)
  17000. * opcodes, M68HC11:                      M68HC11-opcodes.     (line   6)
  17001. * operand delimiters, i386:              i386-Syntax.         (line  15)
  17002. * operand delimiters, x86-64:            i386-Syntax.         (line  15)
  17003. * operand notation, VAX:                 VAX-operands.        (line   6)
  17004. * operands in expressions:               Arguments.           (line   6)
  17005. * operator precedence:                   Infix Ops.           (line  11)
  17006. * operators, in expressions:             Operators.           (line   6)
  17007. * operators, permitted arguments:        Infix Ops.           (line   6)
  17008. * optimization, D10V:                    Overview.            (line 345)
  17009. * optimization, D30V:                    Overview.            (line 350)
  17010. * optimizations:                         Xtensa Optimizations.
  17011.                                                               (line   6)
  17012. * option directive, ARC:                 ARC Directives.      (line 162)
  17013. * option directive, TIC54X:              TIC54X-Directives.   (line 180)
  17014. * option summary:                        Overview.            (line   6)
  17015. * options for Alpha:                     Alpha Options.       (line   6)
  17016. * options for AMD29K (none):             AMD29K Options.      (line   6)
  17017. * options for ARC (none):                ARC Options.         (line   6)
  17018. * options for ARM (none):                ARM Options.         (line   6)
  17019. * options for i386:                      i386-Options.        (line   6)
  17020. * options for IA-64:                     IA-64 Options.       (line   6)
  17021. * options for MSP430 (none):             MSP430 Options.      (line   6)
  17022. * options for PDP-11:                    PDP-11-Options.      (line   6)
  17023. * options for PowerPC:                   PowerPC-Opts.        (line   6)
  17024. * options for SPARC:                     Sparc-Opts.          (line   6)
  17025. * options for V850 (none):               V850 Options.        (line   6)
  17026. * options for VAX/VMS:                   VAX-Opts.            (line  42)
  17027. * options for x86-64:                    i386-Options.        (line   6)
  17028. * options, all versions of assembler:    Invoking.            (line   6)
  17029. * options, command line:                 Command Line.        (line  13)
  17030. * options, CRIS:                         CRIS-Opts.           (line   6)
  17031. * options, D10V:                         D10V-Opts.           (line   6)
  17032. * options, D30V:                         D30V-Opts.           (line   6)
  17033. * options, H8/300 (none):                H8/300 Options.      (line   6)
  17034. * options, H8/500 (none):                H8/500 Options.      (line   6)
  17035. * options, i960:                         Options-i960.        (line   6)
  17036. * options, IP2K:                         IP2K-Opts.           (line   6)
  17037. * options, M32R:                         M32R-Opts.           (line   6)
  17038. * options, M680x0:                       M68K-Opts.           (line   6)
  17039. * options, M68HC11:                      M68HC11-Opts.        (line   6)
  17040. * options, MMIX:                         MMIX-Opts.           (line   6)
  17041. * options, PJ:                           PJ Options.          (line   6)
  17042. * options, SH:                           SH Options.          (line   6)
  17043. * options, SH64:                         SH64 Options.        (line   6)
  17044. * options, TIC54X:                       TIC54X-Opts.         (line   6)
  17045. * options, Z8000:                        Z8000 Options.       (line   6)
  17046. * org directive:                         Org.                 (line   6)
  17047. * other attribute, of a.out symbol:      Symbol Other.        (line   6)
  17048. * output file:                           Object.              (line   6)
  17049. * p2align directive:                     P2align.             (line   6)
  17050. * p2alignl directive:                    P2align.             (line  28)
  17051. * p2alignw directive:                    P2align.             (line  28)
  17052. * padding the location counter:          Align.               (line   6)
  17053. * padding the location counter given a power of two: P2align. (line   6)
  17054. * padding the location counter given number of bytes: Balign. (line   6)
  17055. * page, in listings:                     Eject.               (line   6)
  17056. * paper size, for listings:              Psize.               (line   6)
  17057. * paths for .include:                    I.                   (line   6)
  17058. * patterns, writing in memory:           Fill.                (line   6)
  17059. * PDP-11 comments:                       PDP-11-Syntax.       (line  16)
  17060. * PDP-11 floating-point register syntax: PDP-11-Syntax.       (line  13)
  17061. * PDP-11 general-purpose register syntax: PDP-11-Syntax.      (line  10)
  17062. * PDP-11 instruction naming:             PDP-11-Mnemonics.    (line   6)
  17063. * PDP-11 support:                        PDP-11-Dependent.    (line   6)
  17064. * PDP-11 syntax:                         PDP-11-Syntax.       (line   6)
  17065. * PIC code generation for ARM:           ARM Options.         (line 117)
  17066. * PIC code generation for M32R:          M32R-Opts.           (line  42)
  17067. * PJ endianness:                         Overview.            (line 457)
  17068. * PJ options:                            PJ Options.          (line   6)
  17069. * PJ support:                            PJ-Dependent.        (line   6)
  17070. * plus, permitted arguments:             Infix Ops.           (line  46)
  17071. * popsection directive:                  PopSection.          (line   6)
  17072. * Position-independent code, CRIS:       CRIS-Opts.           (line  27)
  17073. * Position-independent code, symbols in, CRIS: CRIS-Pic.      (line   6)
  17074. * PowerPC architectures:                 PowerPC-Opts.        (line   6)
  17075. * PowerPC directives:                    PowerPC-Pseudo.      (line   6)
  17076. * PowerPC options:                       PowerPC-Opts.        (line   6)
  17077. * PowerPC support:                       PPC-Dependent.       (line   6)
  17078. * precedence of operators:               Infix Ops.           (line  11)
  17079. * precision, floating point:             Flonums.             (line   6)
  17080. * prefix operators:                      Prefix Ops.          (line   6)
  17081. * prefixes, i386:                        i386-Prefixes.       (line   6)
  17082. * preprocessing:                         Preprocessing.       (line   6)
  17083. * preprocessing, turning on and off:     Preprocessing.       (line  27)
  17084. * previous directive:                    Previous.            (line   6)
  17085. * primary attributes, COFF symbols:      COFF Symbols.        (line  13)
  17086. * print directive:                       Print.               (line   6)
  17087. * proc directive, SPARC:                 Sparc-Directives.    (line  25)
  17088. * profiler directive, MSP 430:           MSP430 Directives.   (line  22)
  17089. * profiling capability for MSP 430:      MSP430 Profiling Capability.
  17090.                                                               (line   6)
  17091. * protected directive:                   Protected.           (line   6)
  17092. * protected registers, AMD 29K:          AMD29K-Regs.         (line  20)
  17093. * pseudo-op .arch, CRIS:                 CRIS-Pseudos.        (line  45)
  17094. * pseudo-op .dword, CRIS:                CRIS-Pseudos.        (line  12)
  17095. * pseudo-op .syntax, CRIS:               CRIS-Pseudos.        (line  17)
  17096. * pseudo-op BSPEC, MMIX:                 MMIX-Pseudos.        (line 131)
  17097. * pseudo-op BYTE, MMIX:                  MMIX-Pseudos.        (line  97)
  17098. * pseudo-op ESPEC, MMIX:                 MMIX-Pseudos.        (line 131)
  17099. * pseudo-op GREG, MMIX:                  MMIX-Pseudos.        (line  50)
  17100. * pseudo-op IS, MMIX:                    MMIX-Pseudos.        (line  42)
  17101. * pseudo-op LOC, MMIX:                   MMIX-Pseudos.        (line   7)
  17102. * pseudo-op LOCAL, MMIX:                 MMIX-Pseudos.        (line  28)
  17103. * pseudo-op OCTA, MMIX:                  MMIX-Pseudos.        (line 108)
  17104. * pseudo-op PREFIX, MMIX:                MMIX-Pseudos.        (line 120)
  17105. * pseudo-op TETRA, MMIX:                 MMIX-Pseudos.        (line 108)
  17106. * pseudo-op WYDE, MMIX:                  MMIX-Pseudos.        (line 108)
  17107. * pseudo-opcodes, M680x0:                M68K-Branch.         (line   6)
  17108. * pseudo-opcodes, M68HC11:               M68HC11-Branch.      (line   6)
  17109. * pseudo-ops for branch, VAX:            VAX-branch.          (line   6)
  17110. * pseudo-ops, CRIS:                      CRIS-Pseudos.        (line   6)
  17111. * pseudo-ops, machine independent:       Pseudo Ops.          (line   6)
  17112. * pseudo-ops, MMIX:                      MMIX-Pseudos.        (line   6)
  17113. * psize directive:                       Psize.               (line   6)
  17114. * PSR bits:                              IA-64-Bits.          (line   6)
  17115. * pstring directive, TIC54X:             TIC54X-Directives.   (line 209)
  17116. * psw register, V850:                    V850-Regs.           (line 116)
  17117. * purgem directive:                      Purgem.              (line   6)
  17118. * purpose of GNU assembler:              GNU Assembler.       (line  12)
  17119. * pushsection directive:                 PushSection.         (line   6)
  17120. * quad directive:                        Quad.                (line   6)
  17121. * quad directive, i386:                  i386-Float.          (line  21)
  17122. * quad directive, x86-64:                i386-Float.          (line  21)
  17123. * real-mode code, i386:                  i386-16bit.          (line   6)
  17124. * ref directive, TIC54X:                 TIC54X-Directives.   (line 103)
  17125. * register directive, SPARC:             Sparc-Directives.    (line  29)
  17126. * register names, Alpha:                 Alpha-Regs.          (line   6)
  17127. * register names, AMD 29K:               AMD29K-Regs.         (line   6)
  17128. * register names, ARC:                   ARC-Regs.            (line   6)
  17129. * register names, ARM:                   ARM-Regs.            (line   6)
  17130. * register names, CRIS:                  CRIS-Regs.           (line   6)
  17131. * register names, H8/300:                H8/300-Regs.         (line   6)
  17132. * register names, IA-64:                 IA-64-Regs.          (line   6)
  17133. * register names, MMIX:                  MMIX-Regs.           (line   6)
  17134. * register names, MSP 430:               MSP430-Regs.         (line   6)
  17135. * register names, V850:                  V850-Regs.           (line   6)
  17136. * register names, VAX:                   VAX-operands.        (line  17)
  17137. * register names, Xtensa:                Xtensa Registers.    (line   6)
  17138. * register operands, i386:               i386-Syntax.         (line  15)
  17139. * register operands, x86-64:             i386-Syntax.         (line  15)
  17140. * registers, D10V:                       D10V-Regs.           (line   6)
  17141. * registers, D30V:                       D30V-Regs.           (line   6)
  17142. * registers, H8/500:                     H8/500-Regs.         (line   6)
  17143. * registers, i386:                       i386-Regs.           (line   6)
  17144. * registers, SH:                         SH-Regs.             (line   6)
  17145. * registers, SH64:                       SH64-Regs.           (line   6)
  17146. * registers, TIC54X memory-mapped:       TIC54X-MMRegs.       (line   6)
  17147. * registers, x86-64:                     i386-Regs.           (line   6)
  17148. * registers, Z8000:                      Z8000-Regs.          (line   6)
  17149. * relaxation:                            Xtensa Relaxation.   (line   6)
  17150. * relaxation of ADDI instructions:       Xtensa Immediate Relaxation.
  17151.                                                               (line  43)
  17152. * relaxation of branch instructions:     Xtensa Branch Relaxation.
  17153.                                                               (line   6)
  17154. * relaxation of call instructions:       Xtensa Call Relaxation.
  17155.                                                               (line   6)
  17156. * relaxation of immediate fields:        Xtensa Immediate Relaxation.
  17157.                                                               (line   6)
  17158. * relaxation of L16SI instructions:      Xtensa Immediate Relaxation.
  17159.                                                               (line  23)
  17160. * relaxation of L16UI instructions:      Xtensa Immediate Relaxation.
  17161.                                                               (line  23)
  17162. * relaxation of L32I instructions:       Xtensa Immediate Relaxation.
  17163.                                                               (line  23)
  17164. * relaxation of L8UI instructions:       Xtensa Immediate Relaxation.
  17165.                                                               (line  23)
  17166. * relaxation of MOVI instructions:       Xtensa Immediate Relaxation.
  17167.                                                               (line  12)
  17168. * relocation:                            Sections.            (line   6)
  17169. * relocation example:                    Ld Sections.         (line  40)
  17170. * relocations, Alpha:                    Alpha-Relocs.        (line   6)
  17171. * repeat prefixes, i386:                 i386-Prefixes.       (line  44)
  17172. * reporting bugs in assembler:           Reporting Bugs.      (line   6)
  17173. * rept directive:                        Rept.                (line   6)
  17174. * req directive, ARM:                    ARM Directives.      (line  13)
  17175. * reserve directive, SPARC:              Sparc-Directives.    (line  39)
  17176. * return instructions, i386:             i386-Syntax.         (line  38)
  17177. * return instructions, x86-64:           i386-Syntax.         (line  38)
  17178. * REX prefixes, i386:                    i386-Prefixes.       (line  46)
  17179. * rsect:                                 Z8000 Directives.    (line  52)
  17180. * sblock directive, TIC54X:              TIC54X-Directives.   (line 183)
  17181. * sbttl directive:                       Sbttl.               (line   6)
  17182. * schedule directive:                    Schedule Directive.  (line   6)
  17183. * scl directive:                         Scl.                 (line   6)
  17184. * sdaoff pseudo-op, V850:                V850 Opcodes.        (line  65)
  17185. * search path for .include:              I.                   (line   6)
  17186. * sect directive, AMD 29K:               AMD29K Directives.   (line  30)
  17187. * sect directive, MSP 430:               MSP430 Directives.   (line  18)
  17188. * sect directive, TIC54X:                TIC54X-Directives.   (line 189)
  17189. * section directive (COFF version):      Section.             (line  16)
  17190. * section directive (ELF version):       Section.             (line  67)
  17191. * section directive, V850:               V850 Directives.     (line   9)
  17192. * section override prefixes, i386:       i386-Prefixes.       (line  23)
  17193. * Section Stack <1>:                     SubSection.          (line   6)
  17194. * Section Stack <2>:                     Section.             (line  62)
  17195. * Section Stack <3>:                     PushSection.         (line   6)
  17196. * Section Stack <4>:                     PopSection.          (line   6)
  17197. * Section Stack:                         Previous.            (line   6)
  17198. * section-relative addressing:           Secs Background.     (line  68)
  17199. * sections:                              Sections.            (line   6)
  17200. * sections in messages, internal:        As Sections.         (line   6)
  17201. * sections, i386:                        i386-Syntax.         (line  44)
  17202. * sections, named:                       Ld Sections.         (line   8)
  17203. * sections, x86-64:                      i386-Syntax.         (line  44)
  17204. * seg directive, SPARC:                  Sparc-Directives.    (line  44)
  17205. * segm:                                  Z8000 Directives.    (line  10)
  17206. * set directive:                         Set.                 (line   6)
  17207. * set directive, M88K:                   M88K Directives.     (line  30)
  17208. * set directive, TIC54X:                 TIC54X-Directives.   (line 192)
  17209. * SH addressing modes:                   SH-Addressing.       (line   6)
  17210. * SH floating point (IEEE):              SH Floating Point.   (line   6)
  17211. * SH line comment character:             SH-Chars.            (line   6)
  17212. * SH line separator:                     SH-Chars.            (line   8)
  17213. * SH machine directives:                 SH Directives.       (line   6)
  17214. * SH opcode summary:                     SH Opcodes.          (line   6)
  17215. * SH options:                            SH Options.          (line   6)
  17216. * SH registers:                          SH-Regs.             (line   6)
  17217. * SH support:                            SH-Dependent.        (line   6)
  17218. * SH64 ABI options:                      SH64 Options.        (line  29)
  17219. * SH64 addressing modes:                 SH64-Addressing.     (line   6)
  17220. * SH64 ISA options:                      SH64 Options.        (line   6)
  17221. * SH64 line comment character:           SH64-Chars.          (line   6)
  17222. * SH64 line separator:                   SH64-Chars.          (line   8)
  17223. * SH64 machine directives:               SH64 Directives.     (line   9)
  17224. * SH64 opcode summary:                   SH64 Opcodes.        (line   6)
  17225. * SH64 options:                          SH64 Options.        (line   6)
  17226. * SH64 registers:                        SH64-Regs.           (line   6)
  17227. * SH64 support:                          SH64-Dependent.      (line   6)
  17228. * shigh directive, M32R:                 M32R-Directives.     (line  26)
  17229. * short directive:                       Short.               (line   6)
  17230. * short directive, ARC:                  ARC Directives.      (line 171)
  17231. * short directive, TIC54X:               TIC54X-Directives.   (line 111)
  17232. * SIMD, i386:                            i386-SIMD.           (line   6)
  17233. * SIMD, x86-64:                          i386-SIMD.           (line   6)
  17234. * single character constant:             Chars.               (line   6)
  17235. * single directive:                      Single.              (line   6)
  17236. * single directive, i386:                i386-Float.          (line  14)
  17237. * single directive, x86-64:              i386-Float.          (line  14)
  17238. * sixteen bit integers:                  hword.               (line   6)
  17239. * sixteen byte integer:                  Octa.                (line   6)
  17240. * size directive (COFF version):         Size.                (line  11)
  17241. * size directive (ELF version):          Size.                (line  22)
  17242. * size modifiers, D10V:                  D10V-Size.           (line   6)
  17243. * size modifiers, D30V:                  D30V-Size.           (line   6)
  17244. * size modifiers, M680x0:                M68K-Syntax.         (line   8)
  17245. * size prefixes, i386:                   i386-Prefixes.       (line  27)
  17246. * size suffixes, H8/300:                 H8/300 Opcodes.      (line 163)
  17247. * sizes operands, i386:                  i386-Syntax.         (line  29)
  17248. * sizes operands, x86-64:                i386-Syntax.         (line  29)
  17249. * skip directive:                        Skip.                (line   6)
  17250. * skip directive, M680x0:                M68K-Directives.     (line  19)
  17251. * skip directive, SPARC:                 Sparc-Directives.    (line  48)
  17252. * sleb128 directive:                     Sleb128.             (line   6)
  17253. * small objects, MIPS ECOFF:             MIPS Object.         (line  11)
  17254. * SOM symbol attributes:                 SOM Symbols.         (line   6)
  17255. * source program:                        Input Files.         (line   6)
  17256. * source, destination operands; i386:    i386-Syntax.         (line  22)
  17257. * source, destination operands; x86-64:  i386-Syntax.         (line  22)
  17258. * sp register:                           Xtensa Registers.    (line   6)
  17259. * sp register, V850:                     V850-Regs.           (line  14)
  17260. * space directive:                       Space.               (line   6)
  17261. * space directive, TIC54X:               TIC54X-Directives.   (line 197)
  17262. * space used, maximum for assembly:      statistics.          (line   6)
  17263. * SPARC architectures:                   Sparc-Opts.          (line   6)
  17264. * SPARC data alignment:                  Sparc-Aligned-Data.  (line   6)
  17265. * SPARC floating point (IEEE):           Sparc-Float.         (line   6)
  17266. * SPARC machine directives:              Sparc-Directives.    (line   6)
  17267. * SPARC options:                         Sparc-Opts.          (line   6)
  17268. * SPARC support:                         Sparc-Dependent.     (line   6)
  17269. * special characters, ARC:               ARC-Chars.           (line   6)
  17270. * special characters, M680x0:            M68K-Chars.          (line   6)
  17271. * special purpose registers, AMD 29K:    AMD29K-Regs.         (line  20)
  17272. * special purpose registers, MSP 430:    MSP430-Regs.         (line  11)
  17273. * sslist directive, TIC54X:              TIC54X-Directives.   (line 204)
  17274. * ssnolist directive, TIC54X:            TIC54X-Directives.   (line 204)
  17275. * stabd directive:                       Stab.                (line  38)
  17276. * stabn directive:                       Stab.                (line  48)
  17277. * stabs directive:                       Stab.                (line  51)
  17278. * stabX directives:                      Stab.                (line   6)
  17279. * standard assembler sections:           Secs Background.     (line  27)
  17280. * standard input, as input file:         Command Line.        (line  10)
  17281. * statement separator character:         Statements.          (line   6)
  17282. * statement separator, Alpha:            Alpha-Chars.         (line   8)
  17283. * statement separator, ARM:              ARM-Chars.           (line  10)
  17284. * statement separator, H8/300:           H8/300-Chars.        (line   8)
  17285. * statement separator, H8/500:           H8/500-Chars.        (line   8)
  17286. * statement separator, IA-64:            IA-64-Chars.         (line   8)
  17287. * statement separator, SH:               SH-Chars.            (line   8)
  17288. * statement separator, SH64:             SH64-Chars.          (line   8)
  17289. * statement separator, Z8000:            Z8000-Chars.         (line   8)
  17290. * statements, structure of:              Statements.          (line   6)
  17291. * statistics, about assembly:            statistics.          (line   6)
  17292. * stopping the assembly:                 Abort.               (line   6)
  17293. * string constants:                      Strings.             (line   6)
  17294. * string directive:                      String.              (line   6)
  17295. * string directive on HPPA:              HPPA Directives.     (line 137)
  17296. * string directive, M88K:                M88K Directives.     (line  25)
  17297. * string directive, TIC54X:              TIC54X-Directives.   (line 209)
  17298. * string literals:                       Ascii.               (line   6)
  17299. * string, copying to object file:        String.              (line   6)
  17300. * struct directive:                      Struct.              (line   6)
  17301. * struct directive, TIC54X:              TIC54X-Directives.   (line 217)
  17302. * structure debugging, COFF:             Tag.                 (line   6)
  17303. * sub-instruction ordering, D10V:        D10V-Chars.          (line   6)
  17304. * sub-instruction ordering, D30V:        D30V-Chars.          (line   6)
  17305. * sub-instructions, D10V:                D10V-Subs.           (line   6)
  17306. * sub-instructions, D30V:                D30V-Subs.           (line   6)
  17307. * subexpressions:                        Arguments.           (line  24)
  17308. * subsection directive:                  SubSection.          (line   6)
  17309. * subsym builtins, TIC54X:               TIC54X-Macros.       (line  16)
  17310. * subtitles for listings:                Sbttl.               (line   6)
  17311. * subtraction, permitted arguments:      Infix Ops.           (line  51)
  17312. * summary of options:                    Overview.            (line   6)
  17313. * support:                               HPPA-Dependent.      (line   6)
  17314. * supporting files, including:           Include.             (line   6)
  17315. * suppressing warnings:                  W.                   (line  11)
  17316. * sval:                                  Z8000 Directives.    (line  33)
  17317. * symbol attributes:                     Symbol Attributes.   (line   6)
  17318. * symbol attributes, a.out:              a.out Symbols.       (line   6)
  17319. * symbol attributes, COFF:               COFF Symbols.        (line   6)
  17320. * symbol attributes, SOM:                SOM Symbols.         (line   6)
  17321. * symbol descriptor, COFF:               Desc.                (line   6)
  17322. * symbol modifiers:                      M68HC11-Modifiers.   (line  12)
  17323. * symbol names:                          Symbol Names.        (line   6)
  17324. * symbol names, $ in <1>:                SH64-Chars.          (line  10)
  17325. * symbol names, $ in <2>:                SH-Chars.            (line  10)
  17326. * symbol names, $ in <3>:                H8/500-Chars.        (line  10)
  17327. * symbol names, $ in <4>:                D30V-Chars.          (line  63)
  17328. * symbol names, $ in:                    D10V-Chars.          (line  46)
  17329. * symbol names, local:                   Symbol Names.        (line  24)
  17330. * symbol names, temporary:               Symbol Names.        (line  24)
  17331. * symbol storage class (COFF):           Scl.                 (line   6)
  17332. * symbol type:                           Symbol Type.         (line   6)
  17333. * symbol type, COFF:                     Type.                (line  11)
  17334. * symbol type, ELF:                      Type.                (line  25)
  17335. * symbol value:                          Symbol Value.        (line   6)
  17336. * symbol value, setting:                 Set.                 (line   6)
  17337. * symbol values, assigning:              Setting Symbols.     (line   6)
  17338. * symbol versioning:                     Symver.              (line   6)
  17339. * symbol, common:                        Comm.                (line   6)
  17340. * symbol, making visible to linker:      Global.              (line   6)
  17341. * symbolic debuggers, information for:   Stab.                (line   6)
  17342. * symbols:                               Symbols.             (line   6)
  17343. * Symbols in position-independent code, CRIS: CRIS-Pic.       (line   6)
  17344. * symbols with uppercase, VAX/VMS:       VAX-Opts.            (line  42)
  17345. * symbols, assigning values to:          Equ.                 (line   6)
  17346. * Symbols, built-in, CRIS:               CRIS-Symbols.        (line   6)
  17347. * Symbols, CRIS, built-in:               CRIS-Symbols.        (line   6)
  17348. * symbols, local common:                 Lcomm.               (line   6)
  17349. * symver directive:                      Symver.              (line   6)
  17350. * syntax compatibility, i386:            i386-Syntax.         (line   6)
  17351. * syntax compatibility, x86-64:          i386-Syntax.         (line   6)
  17352. * syntax, D10V:                          D10V-Syntax.         (line   6)
  17353. * syntax, D30V:                          D30V-Syntax.         (line   6)
  17354. * syntax, M680x0:                        M68K-Syntax.         (line   8)
  17355. * syntax, M68HC11 <1>:                   M68HC11-Modifiers.   (line   6)
  17356. * syntax, M68HC11:                       M68HC11-Syntax.      (line   6)
  17357. * syntax, machine-independent:           Syntax.              (line   6)
  17358. * syntax, Xtensa assembler:              Xtensa Syntax.       (line   6)
  17359. * sysproc directive, i960:               Directives-i960.     (line  37)
  17360. * tab (\t):                              Strings.             (line  27)
  17361. * tab directive, TIC54X:                 TIC54X-Directives.   (line 248)
  17362. * tag directive:                         Tag.                 (line   6)
  17363. * tag directive, TIC54X:                 TIC54X-Directives.   (line 217)
  17364. * tdaoff pseudo-op, V850:                V850 Opcodes.        (line  81)
  17365. * temporary symbol names:                Symbol Names.        (line  24)
  17366. * text and data sections, joining:       R.                   (line   6)
  17367. * text directive:                        Text.                (line   6)
  17368. * text section:                          Ld Sections.         (line   9)
  17369. * tfloat directive, i386:                i386-Float.          (line  14)
  17370. * tfloat directive, x86-64:              i386-Float.          (line  14)
  17371. * thumb directive, ARM:                  ARM Directives.      (line  33)
  17372. * Thumb support:                         ARM-Dependent.       (line   6)
  17373. * thumb_func directive, ARM:             ARM Directives.      (line  43)
  17374. * thumb_set directive, ARM:              ARM Directives.      (line  51)
  17375. * TIC54X builtin math functions:         TIC54X-Builtins.     (line   6)
  17376. * TIC54X machine directives:             TIC54X-Directives.   (line   6)
  17377. * TIC54X memory-mapped registers:        TIC54X-MMRegs.       (line   6)
  17378. * TIC54X options:                        TIC54X-Opts.         (line   6)
  17379. * TIC54X subsym builtins:                TIC54X-Macros.       (line  16)
  17380. * TIC54X support:                        TIC54X-Dependent.    (line   6)
  17381. * TIC54X-specific macros:                TIC54X-Macros.       (line   6)
  17382. * time, total for assembly:              statistics.          (line   6)
  17383. * title directive:                       Title.               (line   6)
  17384. * tp register, V850:                     V850-Regs.           (line  20)
  17385. * transform directive:                   Transform Directive. (line   6)
  17386. * trusted compiler:                      f.                   (line   6)
  17387. * turning preprocessing on and off:      Preprocessing.       (line  27)
  17388. * type directive (COFF version):         Type.                (line  11)
  17389. * type directive (ELF version):          Type.                (line  25)
  17390. * type of a symbol:                      Symbol Type.         (line   6)
  17391. * ualong directive, SH:                  SH Directives.       (line   6)
  17392. * uaword directive, SH:                  SH Directives.       (line   6)
  17393. * ubyte directive, TIC54X:               TIC54X-Directives.   (line  36)
  17394. * uchar directive, TIC54X:               TIC54X-Directives.   (line  36)
  17395. * uhalf directive, TIC54X:               TIC54X-Directives.   (line 111)
  17396. * uint directive, TIC54X:                TIC54X-Directives.   (line 111)
  17397. * uleb128 directive:                     Uleb128.             (line   6)
  17398. * ulong directive, TIC54X:               TIC54X-Directives.   (line 135)
  17399. * undefined section:                     Ld Sections.         (line  36)
  17400. * union directive, TIC54X:               TIC54X-Directives.   (line 251)
  17401. * unreq directive, ARM:                  ARM Directives.      (line  18)
  17402. * unsegm:                                Z8000 Directives.    (line  14)
  17403. * use directive, AMD 29K:                AMD29K Directives.   (line  34)
  17404. * usect directive, TIC54X:               TIC54X-Directives.   (line 263)
  17405. * ushort directive, TIC54X:              TIC54X-Directives.   (line 111)
  17406. * uword directive, TIC54X:               TIC54X-Directives.   (line 111)
  17407. * V850 command line options:             V850 Options.        (line   9)
  17408. * V850 floating point (IEEE):            V850 Floating Point. (line   6)
  17409. * V850 line comment character:           V850-Chars.          (line   6)
  17410. * V850 machine directives:               V850 Directives.     (line   6)
  17411. * V850 opcodes:                          V850 Opcodes.        (line   6)
  17412. * V850 options (none):                   V850 Options.        (line   6)
  17413. * V850 register names:                   V850-Regs.           (line   6)
  17414. * V850 support:                          V850-Dependent.      (line   6)
  17415. * val directive:                         Val.                 (line   6)
  17416. * value attribute, COFF:                 Val.                 (line   6)
  17417. * value of a symbol:                     Symbol Value.        (line   6)
  17418. * var directive, TIC54X:                 TIC54X-Directives.   (line 273)
  17419. * VAX bitfields not supported:           VAX-no.              (line   6)
  17420. * VAX branch improvement:                VAX-branch.          (line   6)
  17421. * VAX command-line options ignored:      VAX-Opts.            (line   6)
  17422. * VAX displacement sizing character:     VAX-operands.        (line  12)
  17423. * VAX floating point:                    VAX-float.           (line   6)
  17424. * VAX immediate character:               VAX-operands.        (line   6)
  17425. * VAX indirect character:                VAX-operands.        (line   9)
  17426. * VAX machine directives:                VAX-directives.      (line   6)
  17427. * VAX opcode mnemonics:                  VAX-opcodes.         (line   6)
  17428. * VAX operand notation:                  VAX-operands.        (line   6)
  17429. * VAX register names:                    VAX-operands.        (line  17)
  17430. * VAX support:                           Vax-Dependent.       (line   6)
  17431. * Vax-11 C compatibility:                VAX-Opts.            (line  42)
  17432. * VAX/VMS options:                       VAX-Opts.            (line  42)
  17433. * version directive:                     Version.             (line   6)
  17434. * version directive, TIC54X:             TIC54X-Directives.   (line 277)
  17435. * version of assembler:                  v.                   (line   6)
  17436. * versions of symbols:                   Symver.              (line   6)
  17437. * visibility <1>:                        Protected.           (line   6)
  17438. * visibility <2>:                        Internal.            (line   6)
  17439. * visibility:                            Hidden.              (line   6)
  17440. * VMS (VAX) options:                     VAX-Opts.            (line  42)
  17441. * vtable_entry directive:                VTableEntry.         (line   6)
  17442. * vtable_inherit directive:              VTableInherit.       (line   6)
  17443. * warning directive:                     Warning.             (line   6)
  17444. * warning for altered difference tables: K.                   (line   6)
  17445. * warning messages:                      Errors.              (line   6)
  17446. * warnings, causing error:               W.                   (line  16)
  17447. * warnings, M32R:                        M32R-Warnings.       (line   6)
  17448. * warnings, suppressing:                 W.                   (line  11)
  17449. * warnings, switching on:                W.                   (line  19)
  17450. * weak directive:                        Weak.                (line   6)
  17451. * whitespace:                            Whitespace.          (line   6)
  17452. * whitespace, removed by preprocessor:   Preprocessing.       (line   7)
  17453. * wide floating point directives, VAX:   VAX-directives.      (line  10)
  17454. * width directive, TIC54X:               TIC54X-Directives.   (line 127)
  17455. * Width of continuation lines of disassembly output: listing. (line  20)
  17456. * Width of first line disassembly output: listing.            (line  15)
  17457. * Width of source line output:           listing.             (line  27)
  17458. * wmsg directive, TIC54X:                TIC54X-Directives.   (line  77)
  17459. * word directive:                        Word.                (line   6)
  17460. * word directive, ARC:                   ARC Directives.      (line 174)
  17461. * word directive, H8/300:                H8/300 Directives.   (line   6)
  17462. * word directive, H8/500:                H8/500 Directives.   (line   6)
  17463. * word directive, i386:                  i386-Float.          (line  21)
  17464. * word directive, M88K:                  M88K Directives.     (line  22)
  17465. * word directive, SPARC:                 Sparc-Directives.    (line  51)
  17466. * word directive, TIC54X:                TIC54X-Directives.   (line 111)
  17467. * word directive, x86-64:                i386-Float.          (line  21)
  17468. * writing patterns in memory:            Fill.                (line   6)
  17469. * wval:                                  Z8000 Directives.    (line  24)
  17470. * x86-64 arch directive:                 i386-Arch.           (line   6)
  17471. * x86-64 att_syntax pseudo op:           i386-Syntax.         (line   6)
  17472. * x86-64 conversion instructions:        i386-Mnemonics.      (line  32)
  17473. * x86-64 floating point:                 i386-Float.          (line   6)
  17474. * x86-64 immediate operands:             i386-Syntax.         (line  15)
  17475. * x86-64 instruction naming:             i386-Mnemonics.      (line   6)
  17476. * x86-64 intel_syntax pseudo op:         i386-Syntax.         (line   6)
  17477. * x86-64 jump optimization:              i386-Jumps.          (line   6)
  17478. * x86-64 jump, call, return:             i386-Syntax.         (line  38)
  17479. * x86-64 jump/call operands:             i386-Syntax.         (line  15)
  17480. * x86-64 memory references:              i386-Memory.         (line   6)
  17481. * x86-64 options:                        i386-Options.        (line   6)
  17482. * x86-64 register operands:              i386-Syntax.         (line  15)
  17483. * x86-64 registers:                      i386-Regs.           (line   6)
  17484. * x86-64 sections:                       i386-Syntax.         (line  44)
  17485. * x86-64 size suffixes:                  i386-Syntax.         (line  29)
  17486. * x86-64 source, destination operands:   i386-Syntax.         (line  22)
  17487. * x86-64 support:                        i386-Dependent.      (line   6)
  17488. * x86-64 syntax compatibility:           i386-Syntax.         (line   6)
  17489. * xfloat directive, TIC54X:              TIC54X-Directives.   (line  64)
  17490. * xlong directive, TIC54X:               TIC54X-Directives.   (line 135)
  17491. * Xtensa architecture:                   Xtensa-Dependent.    (line   6)
  17492. * Xtensa assembler syntax:               Xtensa Syntax.       (line   6)
  17493. * Xtensa directives:                     Xtensa Directives.   (line   6)
  17494. * Xtensa opcode names:                   Xtensa Opcodes.      (line   6)
  17495. * Xtensa register names:                 Xtensa Registers.    (line   6)
  17496. * xword directive, SPARC:                Sparc-Directives.    (line  55)
  17497. * Z800 addressing modes:                 Z8000-Addressing.    (line   6)
  17498. * Z8000 directives:                      Z8000 Directives.    (line   6)
  17499. * Z8000 line comment character:          Z8000-Chars.         (line   6)
  17500. * Z8000 line separator:                  Z8000-Chars.         (line   8)
  17501. * Z8000 opcode summary:                  Z8000 Opcodes.       (line   6)
  17502. * Z8000 options:                         Z8000 Options.       (line   6)
  17503. * Z8000 registers:                       Z8000-Regs.          (line   6)
  17504. * Z8000 support:                         Z8000-Dependent.     (line   6)
  17505. * zdaoff pseudo-op, V850:                V850 Opcodes.        (line  99)
  17506. * zero register, V850:                   V850-Regs.           (line   7)
  17507. * zero-terminated strings:               Asciz.               (line   6)
  17508.  
  17509.  
  17510. 
  17511. Tag Table:
  17512. Node: Top870
  17513. Node: Overview1789
  17514. Node: Manual25005
  17515. Node: GNU Assembler25949
  17516. Node: Object Formats27120
  17517. Node: Command Line27572
  17518. Node: Input Files28659
  17519. Node: Object30640
  17520. Node: Errors31592
  17521. Node: Invoking32787
  17522. Node: a34736
  17523. Node: alternate36508
  17524. Node: D36680
  17525. Node: f36913
  17526. Node: I37421
  17527. Node: K37965
  17528. Node: L38268
  17529. Node: listing39105
  17530. Node: M40697
  17531. Node: MD45098
  17532. Node: o45524
  17533. Node: R45979
  17534. Node: statistics47009
  17535. Node: traditional-format47416
  17536. Node: v47889
  17537. Node: W48164
  17538. Node: Z49071
  17539. Node: Syntax49593
  17540. Node: Preprocessing50184
  17541. Node: Whitespace51747
  17542. Node: Comments52143
  17543. Node: Symbol Intro54336
  17544. Node: Statements55026
  17545. Node: Constants56942
  17546. Node: Characters57573
  17547. Node: Strings58075
  17548. Node: Chars60241
  17549. Node: Numbers60995
  17550. Node: Integers61535
  17551. Node: Bignums62191
  17552. Node: Flonums62547
  17553. Node: Sections64302
  17554. Node: Secs Background64680
  17555. Node: Ld Sections69730
  17556. Node: As Sections72114
  17557. Node: Sub-Sections73024
  17558. Node: bss76171
  17559. Node: Symbols77121
  17560. Node: Labels77769
  17561. Node: Setting Symbols78500
  17562. Node: Symbol Names78870
  17563. Node: Dot83339
  17564. Node: Symbol Attributes83786
  17565. Node: Symbol Value84523
  17566. Node: Symbol Type85568
  17567. Node: a.out Symbols85956
  17568. Node: Symbol Desc86218
  17569. Node: Symbol Other86513
  17570. Node: COFF Symbols86682
  17571. Node: SOM Symbols87355
  17572. Node: Expressions87797
  17573. Node: Empty Exprs88546
  17574. Node: Integer Exprs88893
  17575. Node: Arguments89288
  17576. Node: Operators90394
  17577. Node: Prefix Ops90729
  17578. Node: Infix Ops91057
  17579. Node: Pseudo Ops93454
  17580. Node: Abort98478
  17581. Node: ABORT98883
  17582. Node: Align99150
  17583. Node: Ascii101444
  17584. Node: Asciz101753
  17585. Node: Balign101998
  17586. Node: Byte103861
  17587. Node: Comm104099
  17588. Node: CFI directives105473
  17589. Node: Data107729
  17590. Node: Def108056
  17591. Node: Desc108431
  17592. Node: Dim108931
  17593. Node: Double109329
  17594. Node: Eject109667
  17595. Node: Else109842
  17596. Node: Elseif110138
  17597. Node: End110428
  17598. Node: Endef110643
  17599. Node: Endfunc110973
  17600. Node: Endif111148
  17601. Node: Equ111409
  17602. Node: Equiv111718
  17603. Node: Err112218
  17604. Node: Error112528
  17605. Node: Exitm112973
  17606. Node: Extern113142
  17607. Node: Fail113403
  17608. Node: File113848
  17609. Node: Fill114464
  17610. Node: Float115428
  17611. Node: Func115770
  17612. Node: Global116360
  17613. Node: Hidden117110
  17614. Node: hword117689
  17615. Node: Ident118017
  17616. Node: If118323
  17617. Node: Incbin121119
  17618. Node: Include121814
  17619. Node: Int122365
  17620. Node: Internal122746
  17621. Node: Irp123394
  17622. Node: Irpc124199
  17623. Node: Lcomm125024
  17624. Node: Lflags125772
  17625. Node: Line125966
  17626. Node: Linkonce126999
  17627. Node: Ln128226
  17628. Node: MRI128381
  17629. Node: List128719
  17630. Node: Long129329
  17631. Node: Macro129505
  17632. Node: Altmacro132243
  17633. Node: Noaltmacro133573
  17634. Node: Nolist133741
  17635. Node: Octa134171
  17636. Node: Org134505
  17637. Node: P2align135788
  17638. Node: Previous137716
  17639. Node: PopSection138410
  17640. Node: Print138918
  17641. Node: Protected139147
  17642. Node: Psize139794
  17643. Node: Purgem140478
  17644. Node: PushSection140699
  17645. Node: Quad141256
  17646. Node: Rept141711
  17647. Node: Sbttl142124
  17648. Node: Scl142489
  17649. Node: Section142992
  17650. Node: Set148131
  17651. Node: Short148690
  17652. Node: Single149010
  17653. Node: Size149355
  17654. Node: Sleb128150169
  17655. Node: Skip150491
  17656. Node: Space150813
  17657. Node: Stab151705
  17658. Node: String153707
  17659. Node: Struct154133
  17660. Node: SubSection154856
  17661. Node: Symver155417
  17662. Node: Tag157808
  17663. Node: Text158323
  17664. Node: Title158642
  17665. Node: Type159021
  17666. Node: Uleb128160238
  17667. Node: Val160560
  17668. Node: Version160928
  17669. Node: VTableEntry161201
  17670. Node: VTableInherit161489
  17671. Node: Warning161935
  17672. Node: Weak162169
  17673. Node: Word162835
  17674. Node: Deprecated164678
  17675. Node: Machine Dependencies164913
  17676. Node: AMD29K-Dependent167693
  17677. Node: AMD29K Options168084
  17678. Node: AMD29K Syntax168267
  17679. Node: AMD29K-Macros168543
  17680. Node: AMD29K-Chars168807
  17681. Node: AMD29K-Regs169083
  17682. Node: AMD29K Floating Point170362
  17683. Node: AMD29K Directives170577
  17684. Node: AMD29K Opcodes171997
  17685. Node: Alpha-Dependent172342
  17686. Node: Alpha Notes172781
  17687. Node: Alpha Options173062
  17688. Node: Alpha Syntax175260
  17689. Node: Alpha-Chars175729
  17690. Node: Alpha-Regs175960
  17691. Node: Alpha-Relocs176347
  17692. Node: Alpha Floating Point182338
  17693. Node: Alpha Directives182560
  17694. Node: Alpha Opcodes188083
  17695. Node: ARC-Dependent188378
  17696. Node: ARC Options188761
  17697. Node: ARC Syntax189830
  17698. Node: ARC-Chars190062
  17699. Node: ARC-Regs190194
  17700. Node: ARC Floating Point190318
  17701. Node: ARC Directives190629
  17702. Node: ARC Opcodes196600
  17703. Node: ARM-Dependent196826
  17704. Node: ARM Options197253
  17705. Node: ARM Syntax202854
  17706. Node: ARM-Chars203086
  17707. Node: ARM-Regs203610
  17708. Node: ARM Floating Point203795
  17709. Node: ARM Directives203994
  17710. Node: ARM Opcodes209768
  17711. Node: ARM Mapping Symbols211856
  17712. Node: CRIS-Dependent212635
  17713. Node: CRIS-Opts212980
  17714. Ref: march-option214598
  17715. Node: CRIS-Expand216415
  17716. Node: CRIS-Symbols217598
  17717. Node: CRIS-Syntax218767
  17718. Node: CRIS-Chars219103
  17719. Node: CRIS-Pic219654
  17720. Ref: crispic219850
  17721. Node: CRIS-Regs223390
  17722. Node: CRIS-Pseudos223807
  17723. Ref: crisnous224583
  17724. Node: D10V-Dependent225865
  17725. Node: D10V-Opts226216
  17726. Node: D10V-Syntax227179
  17727. Node: D10V-Size227708
  17728. Node: D10V-Subs228681
  17729. Node: D10V-Chars229716
  17730. Node: D10V-Regs231320
  17731. Node: D10V-Addressing232365
  17732. Node: D10V-Word233051
  17733. Node: D10V-Float233566
  17734. Node: D10V-Opcodes233877
  17735. Node: D30V-Dependent234270
  17736. Node: D30V-Opts234623
  17737. Node: D30V-Syntax235298
  17738. Node: D30V-Size235830
  17739. Node: D30V-Subs236801
  17740. Node: D30V-Chars237836
  17741. Node: D30V-Guarded240134
  17742. Node: D30V-Regs240814
  17743. Node: D30V-Addressing241953
  17744. Node: D30V-Float242621
  17745. Node: D30V-Opcodes242932
  17746. Node: H8/300-Dependent243325
  17747. Node: H8/300 Options243737
  17748. Node: H8/300 Syntax243946
  17749. Node: H8/300-Chars244245
  17750. Node: H8/300-Regs244542
  17751. Node: H8/300-Addressing245459
  17752. Node: H8/300 Floating Point246498
  17753. Node: H8/300 Directives246823
  17754. Node: H8/300 Opcodes247949
  17755. Node: H8/500-Dependent256269
  17756. Node: H8/500 Options256681
  17757. Node: H8/500 Syntax256890
  17758. Node: H8/500-Chars257189
  17759. Node: H8/500-Regs257493
  17760. Node: H8/500-Addressing258262
  17761. Node: H8/500 Floating Point258892
  17762. Node: H8/500 Directives259217
  17763. Node: H8/500 Opcodes259545
  17764. Node: HPPA-Dependent264657
  17765. Node: HPPA Notes265092
  17766. Node: HPPA Options265850
  17767. Node: HPPA Syntax266045
  17768. Node: HPPA Floating Point267315
  17769. Node: HPPA Directives267521
  17770. Node: HPPA Opcodes276207
  17771. Node: ESA/390-Dependent276466
  17772. Node: ESA/390 Notes276926
  17773. Node: ESA/390 Options277717
  17774. Node: ESA/390 Syntax277927
  17775. Node: ESA/390 Floating Point280100
  17776. Node: ESA/390 Directives280379
  17777. Node: ESA/390 Opcodes283668
  17778. Node: i386-Dependent283930
  17779. Node: i386-Options284998
  17780. Node: i386-Syntax285843
  17781. Node: i386-Mnemonics288257
  17782. Node: i386-Regs290722
  17783. Node: i386-Prefixes292767
  17784. Node: i386-Memory295527
  17785. Node: i386-Jumps298464
  17786. Node: i386-Float299585
  17787. Node: i386-SIMD301414
  17788. Node: i386-16bit302523
  17789. Node: i386-Bugs304561
  17790. Node: i386-Arch305315
  17791. Node: i386-Notes307450
  17792. Node: i860-Dependent308308
  17793. Node: Notes-i860308704
  17794. Node: Options-i860309609
  17795. Node: Directives-i860310972
  17796. Node: Opcodes for i860312041
  17797. Node: i960-Dependent314208
  17798. Node: Options-i960314611
  17799. Node: Floating Point-i960318495
  17800. Node: Directives-i960318763
  17801. Node: Opcodes for i960320797
  17802. Node: callj-i960321414
  17803. Node: Compare-and-branch-i960321903
  17804. Node: IA-64-Dependent323807
  17805. Node: IA-64 Options324108
  17806. Node: IA-64 Syntax327140
  17807. Node: IA-64-Chars327503
  17808. Node: IA-64-Regs327733
  17809. Node: IA-64-Bits328659
  17810. Node: IA-64 Opcodes329168
  17811. Node: IP2K-Dependent329440
  17812. Node: IP2K-Opts329668
  17813. Node: M32R-Dependent330148
  17814. Node: M32R-Opts330469
  17815. Node: M32R-Directives334635
  17816. Node: M32R-Warnings338610
  17817. Node: M68K-Dependent341616
  17818. Node: M68K-Opts342083
  17819. Node: M68K-Syntax348568
  17820. Node: M68K-Moto-Syntax350407
  17821. Node: M68K-Float352996
  17822. Node: M68K-Directives353516
  17823. Node: M68K-opcodes354122
  17824. Node: M68K-Branch354348
  17825. Node: M68K-Chars358546
  17826. Node: M68HC11-Dependent358959
  17827. Node: M68HC11-Opts359490
  17828. Node: M68HC11-Syntax363306
  17829. Node: M68HC11-Modifiers365520
  17830. Node: M68HC11-Directives367348
  17831. Node: M68HC11-Float368724
  17832. Node: M68HC11-opcodes369252
  17833. Node: M68HC11-Branch369434
  17834. Node: M88K-Dependent371881
  17835. Node: M88K Directives372132
  17836. Node: MIPS-Dependent373652
  17837. Node: MIPS Opts374739
  17838. Node: MIPS Object381707
  17839. Node: MIPS Stabs383273
  17840. Node: MIPS symbol sizes383995
  17841. Node: MIPS ISA385664
  17842. Node: MIPS autoextend386813
  17843. Node: MIPS insn387543
  17844. Node: MIPS option stack388040
  17845. Node: MIPS ASE instruction generation overrides388814
  17846. Node: MMIX-Dependent389587
  17847. Node: MMIX-Opts389967
  17848. Node: MMIX-Expand393571
  17849. Node: MMIX-Syntax394886
  17850. Ref: mmixsite395243
  17851. Node: MMIX-Chars396084
  17852. Node: MMIX-Symbols396738
  17853. Node: MMIX-Regs398806
  17854. Node: MMIX-Pseudos399831
  17855. Ref: MMIX-loc399972
  17856. Ref: MMIX-local401052
  17857. Ref: MMIX-is401584
  17858. Ref: MMIX-greg401855
  17859. Ref: GREG-base402774
  17860. Ref: MMIX-byte404091
  17861. Ref: MMIX-constants404562
  17862. Ref: MMIX-prefix405208
  17863. Ref: MMIX-spec405582
  17864. Node: MMIX-mmixal405916
  17865. Node: MSP430-Dependent409413
  17866. Node: MSP430 Options409879
  17867. Node: MSP430 Syntax410071
  17868. Node: MSP430-Macros410387
  17869. Node: MSP430-Chars411118
  17870. Node: MSP430-Regs411431
  17871. Node: MSP430-Ext411991
  17872. Node: MSP430 Floating Point413812
  17873. Node: MSP430 Directives414036
  17874. Node: MSP430 Opcodes414827
  17875. Node: MSP430 Profiling Capability415222
  17876. Node: PDP-11-Dependent417551
  17877. Node: PDP-11-Options417940
  17878. Node: PDP-11-Pseudos423011
  17879. Node: PDP-11-Syntax423356
  17880. Node: PDP-11-Mnemonics424107
  17881. Node: PDP-11-Synthetic424409
  17882. Node: PJ-Dependent424627
  17883. Node: PJ Options424852
  17884. Node: PPC-Dependent425129
  17885. Node: PowerPC-Opts425416
  17886. Node: PowerPC-Pseudo427381
  17887. Node: SH-Dependent427980
  17888. Node: SH Options428392
  17889. Node: SH Syntax429246
  17890. Node: SH-Chars429519
  17891. Node: SH-Regs429813
  17892. Node: SH-Addressing430427
  17893. Node: SH Floating Point431336
  17894. Node: SH Directives432430
  17895. Node: SH Opcodes432800
  17896. Node: SH64-Dependent437122
  17897. Node: SH64 Options437485
  17898. Node: SH64 Syntax439202
  17899. Node: SH64-Chars439485
  17900. Node: SH64-Regs439785
  17901. Node: SH64-Addressing440881
  17902. Node: SH64 Directives442064
  17903. Node: SH64 Opcodes443174
  17904. Node: Sparc-Dependent443890
  17905. Node: Sparc-Opts444275
  17906. Node: Sparc-Aligned-Data446532
  17907. Node: Sparc-Float447387
  17908. Node: Sparc-Directives447588
  17909. Node: TIC54X-Dependent449548
  17910. Node: TIC54X-Opts450274
  17911. Node: TIC54X-Block451317
  17912. Node: TIC54X-Env451677
  17913. Node: TIC54X-Constants452025
  17914. Node: TIC54X-Subsyms452427
  17915. Node: TIC54X-Locals454336
  17916. Node: TIC54X-Builtins455080
  17917. Node: TIC54X-Ext457551
  17918. Node: TIC54X-Directives458122
  17919. Node: TIC54X-Macros469024
  17920. Node: TIC54X-MMRegs471134
  17921. Node: Z8000-Dependent471350
  17922. Node: Z8000 Options472314
  17923. Node: Z8000 Syntax472531
  17924. Node: Z8000-Chars472821
  17925. Node: Z8000-Regs473054
  17926. Node: Z8000-Addressing473844
  17927. Node: Z8000 Directives474961
  17928. Node: Z8000 Opcodes476570
  17929. Node: Vax-Dependent486512
  17930. Node: VAX-Opts487029
  17931. Node: VAX-float490764
  17932. Node: VAX-directives491396
  17933. Node: VAX-opcodes492257
  17934. Node: VAX-branch492646
  17935. Node: VAX-operands495153
  17936. Node: VAX-no495916
  17937. Node: V850-Dependent496153
  17938. Node: V850 Options496551
  17939. Node: V850 Syntax498940
  17940. Node: V850-Chars499180
  17941. Node: V850-Regs499345
  17942. Node: V850 Floating Point500913
  17943. Node: V850 Directives501119
  17944. Node: V850 Opcodes502262
  17945. Node: Xtensa-Dependent508154
  17946. Node: Xtensa Options508885
  17947. Node: Xtensa Syntax511656
  17948. Node: Xtensa Opcodes513545
  17949. Node: Xtensa Registers515339
  17950. Node: Xtensa Optimizations515972
  17951. Node: Density Instructions516424
  17952. Node: Xtensa Automatic Alignment517526
  17953. Node: Xtensa Relaxation520272
  17954. Node: Xtensa Branch Relaxation521180
  17955. Node: Xtensa Call Relaxation522552
  17956. Node: Xtensa Immediate Relaxation524338
  17957. Node: Xtensa Directives526912
  17958. Node: Schedule Directive528620
  17959. Node: Longcalls Directive528960
  17960. Node: Transform Directive529504
  17961. Node: Literal Directive530246
  17962. Node: Literal Position Directive532031
  17963. Node: Literal Prefix Directive533730
  17964. Node: Absolute Literals Directive535893
  17965. Node: Reporting Bugs537200
  17966. Node: Bug Criteria537924
  17967. Node: Bug Reporting538689
  17968. Node: Acknowledgements545322
  17969. Ref: Acknowledgements-Footnote-1550241
  17970. Node: GNU Free Documentation License550267
  17971. Node: Index569989
  17972. 
  17973. End Tag Table
  17974.